home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6 / Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso / 015a / tlb_v120.zip / LASTBYTE.DOC < prev    next >
Text File  |  1991-07-31  |  153KB  |  3,662 lines

  1.  
  2.  
  3.         
  4.  
  5.  
  6.  
  7.  
  8.                         THE LAST BYTE MEMORY MANAGER (tm)
  9.  
  10.  
  11.                        An Upper Memory Manager for MS-DOS
  12.  
  13.  
  14.  
  15.  
  16.                                   Version 1.20
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.                               Copyright (C) 1990-91
  24.  
  25.                                All Rights Reserved
  26.  
  27.  
  28.                                        by
  29.  
  30.  
  31.                               KEY SOFTWARE PRODUCTS
  32.  
  33.                                 440 Ninth Avenue
  34.                           Menlo Park, California 94025
  35.  
  36.                                  (415) 364-9847
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.         The Last Byte Memory Manager is a trademark of Key Software Products.
  52.          MS-DOS and Windows 3.0 are trademarks of Microsoft Corporation.
  53.              DR-DOS is a trademark of Digital Research Incorporated.
  54.                       4DOS is a trademark of J.P. Software.
  55.                      Hyperdisk is a trademark of HyperWare.
  56.             Other company trademarks are used with the company name.
  57.  
  58.  
  59.  
  60.         
  61.  
  62.  
  63.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)               2
  64.  
  65.  
  66.                         CHAPTER 1 - INTRODUCTION        
  67.  
  68.  
  69.         The  Last  Byte  Memory  Manager is a collection of software that
  70.         can  provide  up to 384k of additional memory to your computer in
  71.         the  upper  memory  area between 640k and 1 meg.  It does this by
  72.         using  left-over  shadow  ram  memory,  existing fixed read/write
  73.         (RAM)  memory, or by mapping expanded memory (EMS) pages into the
  74.         upper area.  
  75.  
  76.         With  The Last Byte Memory Manager, device drivers, terminate and
  77.         stay  resident  (TSR)  programs,  MS-DOS  disk  buffers,  and the
  78.         master  environment  can  be  moved up into upper memory, leaving
  79.         more   conventional   memory   available   for  your  application
  80.         programs.   Depending  on  your hardware, you may also be able to
  81.         extend  the  total  conventional  memory  from 640k to as much as
  82.         736k.  
  83.  
  84.         The  Last  Byte  Memory  Manager comes with utility programs that
  85.         use  upper  memory  to  create ram disks, print spoolers, command
  86.         line  recal  (history) buffers, emulated expanded memory, and TSR
  87.         "markers"  (to  facilitate  TSR removal).  But best of all, these
  88.         utilities  can  even  use  disabled  shadow  ram  memory normally
  89.         hidden  behind the display buffer, read-only memories (ROMs), and
  90.         other adapter cards.  
  91.  
  92.  
  93.         1.1 Important Advantages        
  94.  
  95.         The  Last  Byte  Memory Manager offers six significant advantages
  96.         over other MS-DOS Upper Memory Managers: 
  97.  
  98.              o  The  Last  Byte  Memory  Manager  uses  very  little
  99.                 conventional  memory:  only  32 bytes for the kernel
  100.                 (LASTBYTE.SYS),   and  another  32  bytes  for  each
  101.                 device driver loaded into upper memory.  
  102.  
  103.              o  The  Last  Byte  Memory  Manager  will work with any
  104.                 processor  chip,  even the 8088 used in the original
  105.                 IBM  PC.   Many memory managers require a 386 cpu or
  106.                 better.  
  107.  
  108.              o  The  Last Byte Memory Manager does not use protected
  109.                 mode  software.   This  means that unlike those that
  110.                 do,   The   Last  Byte  Memory  Manager  is  totally
  111.                 compatible  with  any  protected  mode software, not
  112.                 just Windows 3.0.  
  113.  
  114.              o  The  Last  Byte  Memory  Manager doesn't require any
  115.                 extended  memory.   Other  memory managers depend on
  116.                 the  processor's  ability  to  remap physical memory
  117.  
  118.  
  119.  
  120.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  121.  
  122.  
  123.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)               3
  124.  
  125.  
  126.                 from above 1MB into the upper memory area.  
  127.  
  128.              o  On  motherboards  that  use  one  of  the  supported
  129.                 memory   controller  chips,  The  Last  Byte  Memory
  130.                 Manager,  unlike  all  other MS-DOS memory managers,
  131.                 can  use  the unused shadow ram normally disabled by
  132.                 the  display  buffer,  ROMs  or adapter cards.  This
  133.                 gives  it  the  unique  ability  to  use all 384k of
  134.                 upper memory! 
  135.  
  136.              o  The  Last Byte Memory Manager does not slow down the
  137.                 performance  of  your computer, both because it does
  138.                 not  incur  the 5-10% execution overhead inherent in
  139.                 protected   mode,   and   because  it  uses  regular
  140.                 (full-speed)  memory.  (Some memory managers use the
  141.                 actual  EGA/VGA  graphics  buffer  as MS-DOS memory,
  142.                 but  the  display  buffer  memory  of  some  EGA/VGA
  143.                 adapter  cards  can  be  as much as six times slower
  144.                 than regular memory.)  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  181.  
  182.  
  183.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)               4
  184.  
  185.  
  186.                      CHAPTER 2 - SYSTEM REQUIREMENTS       
  187.  
  188.  
  189.         Fundamentally,  The Last Byte Memory Manager requires version 3.0
  190.         or  later of MS-DOS and some method of implementing memory in the
  191.         upper  memory  area  between  640k  and  1  meg.   Any  Intel (or
  192.         Intel-compatible)  processor  will  do,  including  the  original
  193.         Intel 8088 cpu.  No extended memory is required.  
  194.  
  195.  
  196.         2.1 Supported Hardware        
  197.  
  198.         To  install The Last Byte Memory Manager, your computer must have
  199.         any one of the following: 
  200.  
  201.              o  Fixed  RAM  memory  already  resident  in  the upper
  202.                 area, or 
  203.  
  204.              o  An  expanded memory board (EEMS, LIM 3.2 EMS, or LIM
  205.                 4.0 EMS), or 
  206.  
  207.                 ┌─────────────────────────────────────────────────┐
  208.                 │ NOTE: Using a LIM 3.2 EMS board is not advised  │ 
  209.                 │ as a method of providing upper memory.  It pro- │ 
  210.                 │ vides only 64k of upper memory and prevents ap- │ 
  211.                 │ plication software from using expanded memory.  │ 
  212.                 └─────────────────────────────────────────────────┘ 
  213.  
  214.              o  A  386sx,  386,  486,  or  486sx  processor  and the
  215.                 Microsoft   Windows   3.0   or  DOS  5  versions  of
  216.                 EMM386.SYS, or 
  217.  
  218.              o  One of the following shadow ram controller chips: 
  219.  
  220.         Chips and Technologies:
  221.  
  222.              82C212 - From the CS8221 NEAT (tm) chipset
  223.              82C222 - From the CHIPS/250 PS/2 50/60 chipset
  224.              82C230 - The PS/2 30 Single Chip Controller
  225.              82C235 - The SCAT (tm) Single Chip AT VLSI chip
  226.              82C241 - From the CS8223 LeAPset (tm) chipset
  227.              82C302 - From the CS8230 386/AT CHIPSet (tm)
  228.              82C307 - From the CS8231 386/AT CHIPSet (tm)
  229.              82C311 - From the CS8233 PEAK 386/AT CHIPSet (tm)
  230.              82C322 - From the CHIPS/280 PS/2 70/80 chipset
  231.              82C351 - From the CS8233 PEAK DM CHIPSet (tm)
  232.              82C812 - From the CS8281 NEATsx (tm) chipset
  233.              82C836 - The SCATsx (tm) Single Chip AT VLSI chip
  234.              82C841 - From the CS8283 LeAPset-sx (tm) chipset
  235.  
  236.  
  237.  
  238.  
  239.  
  240.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  241.  
  242.  
  243.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)               5
  244.  
  245.  
  246.         ETEQ Microelectronics:
  247.  
  248.              82C491 - From the Cougar 386DX/486DX chipset
  249.  
  250.         Forex Computer Corporation:
  251.  
  252.              36C300 - From the FRX36C300/200 chipset
  253.  
  254.         OPTi Electronics:
  255.  
  256.              82C281 - From the Cache SX/AT chipset (w/posted write)
  257.              82C282 - From the Cache SX/AT chipset (w/o posted write)
  258.              82C382 - From the HiD/386 AT chipset
  259.              82C391 - From the 386WB PC/AT chipset
  260.              82C482 - From the HiB/486 AT chipset
  261.  
  262.         Sun Electronics (SUNTAC):
  263.  
  264.              62C202 - From the chipset 20 for 286
  265.              62C241 - From the chipset 24 for 386
  266.              62C251 - From the chipset 25 for 286 and 386sx
  267.  
  268.         Symphony Laboratories:
  269.  
  270.              82C361 - From the SL82C360 80386DX/SX chipset
  271.              82C461 - From the SL82C460 80486 chipset
  272.  
  273.         Texas Instruments:
  274.  
  275.              82411  - The Snake Single-Chip AT Controller
  276.              82S411 - The Snake+ Single-Chip AT Controller
  277.  
  278.         United Microelectronics Corporation (UMC):
  279.  
  280.              82C212 - From the UM82C210 386SX/286 AT Chip Set
  281.              82C481 - From the UM82C480 50Mhz 80486 Chip Set
  282.  
  283.              ┌─────────────────────────────────────────────────┐
  284.              │ NOTE: The UMC 82C212 is indistinguishable from  │ 
  285.              │ the Chip & Technologies 82C212.  CHIPSET and    │ 
  286.              │ LASTBYTE.SYS will identify it as the latter.    │ 
  287.              └─────────────────────────────────────────────────┘ 
  288.  
  289.         VLSI Technology:
  290.  
  291.              82C202 - From VLSI Technologies' PC/AT chipset 
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  301.  
  302.  
  303.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)               6
  304.  
  305.  
  306.              ┌─────────────────────────────────────────────────┐
  307.              │ NOTE: There is a pin on the VLSI 82C202 that    │
  308.              │ controls whether or not the shadow ram memory   │
  309.              │ has been relocated above 1 meg as extended      │
  310.              │ memory.  This pin is usually connected to a     │
  311.              │ jumper or DIP switch on the motherboard.  It    │
  312.              │ may be necessary to change the jumper or DIP    │
  313.              │ switch setting to work properly with this chip. │
  314.              └─────────────────────────────────────────────────┘ 
  315.  
  316.         Not  all  memory controller chips allow use of the entire 384k of
  317.         upper  memory.  Consult the appendix on "CHIPSET LIMITATIONS" for
  318.         further information.  
  319.  
  320.  
  321.         2.2 Checking Compatibility Using CHIPSET      
  322.  
  323.         CHIPSET  is  a  small  program  that simply checks to see if your
  324.         computer  has  one  of the memory controllers required to use The
  325.         Last Byte Memory Manager.  
  326.  
  327.                 A>CHIPSET 
  328.  
  329.         CHIPSET  will identify the particular memory controller you have,
  330.         if  any.   If it can't find a memory controller, it will look for
  331.         fixed  memory  in the upper area or expanded memory as a means of
  332.         installing  The Last Byte Memory Manager.  To see the entire list
  333.         of  what  is  supported, add a question mark to the command line,
  334.         as in: 
  335.  
  336.                 A>CHIPSET ? 
  337.  
  338.         If  your  computer  has  one of the listed devices, then The Last
  339.         Byte  Memory  Manager  should  work  on  your  computer.  If your
  340.         computer  uses  another  kind of chipset, it may not be supported
  341.         for one of the following reasons: 
  342.  
  343.  
  344.              o  Some chipsets do not provide shadow ram support.  
  345.  
  346.                 Examples: VLSI Technologies 82C100 series 
  347.                           Western Digital chipsets 
  348.                           Texas Instruments TACT82300 series 
  349.                           Early Suntac chipsets (ST62BC001-6) 
  350.                           United Microelectronics Corp. UM82C231 
  351.  
  352.  
  353.              o  Some  chipsets  have  shadow ram, but it can only be
  354.                 put  into  either  write-only  mode (for copying rom
  355.                 contents  to  ram),  or  read-only  mode (to prevent
  356.                 accidental  writes into what's supposed to be a copy
  357.  
  358.  
  359.  
  360.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  361.  
  362.  
  363.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)               7
  364.  
  365.  
  366.                 of rom).  
  367.  
  368.                 Examples: ACC Microelectronics chipsets 
  369.                           Headland Technologies chipsets 
  370.                           G2 chipsets 
  371.  
  372.  
  373.              o  Many  device  drivers  and  TSRs  either  use Direct
  374.                 Memory  Access  (DMA)  directly, or else they employ
  375.                 disk  buffers  that  MS-DOS  accesses  via DMA.  The
  376.                 hardware  design  of  some  memory  controller chips
  377.                 prevent  DMA from accessing the shadow ram, and thus
  378.                 loading  this  kind  of  software  into  shadow  ram
  379.                 memory is pointless.  
  380.  
  381.                 Examples: VLSI Tech. VL82C286 & VL82C386 TOPCAT 
  382.  
  383.  
  384.              o  The   Last   Byte   Memory   Manager   software   is
  385.                 table-driven,  making it relatively easy to adapt to
  386.                 different   memory   controller  architectures,  but
  387.                 there are limits!   
  388.  
  389.                 Examples: Zymos chipsets 
  390.                           United Micro. Corp. UM82C384, '388, '389 
  391.                           Forex Computer Corp. FRX36C100 
  392.                           Silicon Integrated   System   Corp.  (SIS)
  393.                 chipsets 
  394.  
  395.  
  396.              o  Some  memory  controllers  are designed so that they
  397.                 can   be   "locked"   at   the   end   of   software
  398.                 initialization,   requiring   a  hardware  reset  to
  399.                 unlock,  and  thus  preventing  The Last Byte Memory
  400.                 Manager from accessing the controller.  
  401.  
  402.                 Examples: Intel 82335, 82335SX 
  403.  
  404.  
  405.         Some  of these chips, however, have hardware EMS support and thus
  406.         many  of  their  motherboards  come  with  an  EMS  device driver
  407.         designed  specifically  to take advantage of this capability.  So
  408.         in  many  cases,  you can install this driver first, and then The
  409.         Last  Byte  Memory  Manager can use it to manage the upper memory
  410.         area.  
  411.  
  412.  
  413.  
  414.  
  415.  
  416.  
  417.  
  418.  
  419.  
  420.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  421.  
  422.  
  423.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)               8
  424.  
  425.  
  426.                       CHAPTER 3 - DISTRIBUTION FILES       
  427.  
  428.  
  429.         Version  1.20  of  The  Last  Byte Memory Manager consists of the
  430.         following  distribution  files.  Feel free to upload this package
  431.         to   any   bulletin  board,  but  please  be  sure  all  original
  432.         (unmodified) distribution files are included in the upload.  
  433.  
  434.         CHIPSET.EXE     A program to test your computer for compati-
  435.                         bility with The Last Byte Memory Manager.
  436.  
  437.         CLOCK.EXE       A TSR program to display the current time in the
  438.                         upper left-hand corner of the screen.  (Requires
  439.                         ANSI.SYS.)
  440.  
  441.         COLS.40,80      Text files to be used to verify that ANSI.SYS has
  442.                         been installed and is operating properly.
  443.  
  444.         HIGHAPND.EXE    A program to enable/disable an extension of conven-
  445.         HIGHAPND.SYS    tional memory beyond 640k up to 704k or even 736k,
  446.                         depending on your hardware configuration.
  447.  
  448.         HIGHBFRS.EXE    A program to put the MS-DOS 3.xx disk buffers
  449.                         (i.e., as specified in the "BUFFERS=" command
  450.                         of CONFIG.SYS) in upper memory.
  451.  
  452.         HIGHDISK.SYS    A device driver that creates a ram disk in
  453.                         upper memory.
  454.  
  455.         HIGHDRVR.SYS    A device driver used to load other device 
  456.                         drivers into upper memory.
  457.  
  458.         HIGHEMS3.SYS    A pair of device drivers that emulate expanded
  459.         HIGHEMS4.SYS    memory in upper memory.
  460.  
  461.         HIGHENV.EXE     A program to move the master environment from
  462.                         conventional memory to upper memory.
  463.  
  464.         HIGHHOLE.EXE    A program to locate empty space in shadowed ROMs
  465.                         that can be converted to free High-DOS memory.
  466.  
  467.         HIGHINST.EXE    Exactly like HIGHTSR, except used with the
  468.                         "INSTALL=" command in a CONFIG.SYS file.
  469.  
  470.         HIGHKEY.EXE     A command line recall editor similar to the DOS 5
  471.                         DOSKEY program, but which can store the command
  472.                         line history in bank-switch memory.
  473.  
  474.         HIGHMARK.EXE    A program to mark TSR's so that they may be
  475.                         removed from upper memory at a later time.
  476.  
  477.  
  478.  
  479.  
  480.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  481.  
  482.  
  483.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)               9
  484.  
  485.  
  486.         HIGHMEM.EXE     A program to display a map of upper memory usage.
  487.  
  488.         HIGHSPLR.EXE    A program to create a printer spooler in upper
  489.                         memory.
  490.  
  491.         HIGHTSR.EXE     A program to load TSR's into upper memory.
  492.  
  493.         HIGHUMM.DOC     A device driver that application programmers may
  494.         HIGHUMM.SYS     use to access upper memory from their own pro-
  495.                         grams.  (For a detailed specification of the soft-
  496.                         ware interface, see the information in the file
  497.                         HIGHUMM.DOC.)
  498.  
  499.         HIGHUNDO.EXE    A program to remove TSR's (and their associated
  500.                         mark) that have been previously marked with
  501.                         HIGHMARK.
  502.  
  503.         LASTBYTE.DOC    This text file.
  504.  
  505.         LASTBYTE.SYS    A device driver that must be loaded before any
  506.                         other software of The Last Byte Memory Manager.
  507.  
  508.         LICENSE.EXE     A program to install your name and personal
  509.                         access key into the file LASTBYTE.SYS.
  510.  
  511.         ORDERFRM.DOC    A text file containing individual and site
  512.                         license order forms.
  513.  
  514.         WHATSNEW.120    A text file describing changes since the
  515.                         previous version.
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535.  
  536.  
  537.  
  538.  
  539.  
  540.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  541.  
  542.  
  543.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              10
  544.  
  545.  
  546.                        CHAPTER 4 - GETTING STARTED       
  547.  
  548.  
  549.         The  first  thing  to  do is to be sure that The Last Byte Memory
  550.         Manager  will  work  on your computer.  You can do this by simply
  551.         running  the  program  called  CHIPSET.  Once you have determined
  552.         that  The  Last  Byte  Memory  Manager will work, you should then
  553.         install  it on a floppy according to the instructions that follow
  554.         to verify that you can boot and operate your computer reliably.  
  555.  
  556.  
  557.         4.1 Testing LASTBYTE.SYS HIGHDRVR.SYS and HIGHTSR.EXE     
  558.  
  559.         To  install  The  Last  Byte Memory Manager on a floppy diskette,
  560.         perform the following steps: 
  561.  
  562.              Step 1:  Use  the  MS-DOS  FORMAT  command  with the /S
  563.                       option to prepare a bootable floppy disk.  
  564.  
  565.              Step 2:  Copy  the  files  LASTBYTE.SYS,  HIGHDRVR.SYS,
  566.                       HIGHTSR.EXE,     HIGHMEM.EXE,    HIGHMARK.EXE,
  567.                       HIGHUNDO.EXE,  CLOCK.EXE, COLS.40, and COLS.80
  568.                       onto the diskette.  
  569.  
  570.              Step 3:  Copy  the  MS-DOS  device driver file ANSI.SYS
  571.                       onto the diskette.  
  572.  
  573.              Step 4:  Create  a  CONFIG.SYS  file on the floppy that
  574.                       contains the lines: 
  575.  
  576.                               DEVICE=LASTBYTE.SYS ? 
  577.                               DEVICE=HIGHDRVR.SYS ANSI.SYS 
  578.  
  579.                       ┌─────────────────────────────────────────────────┐
  580.                       │ NOTE: If your installation is dependent on the  │
  581.                       │ presence of expanded memory, then you must pre- │
  582.                       │ cede these lines with a similar line to install │
  583.                       │ your expanded memory device driver before in-   │
  584.                       │ stalling LASTBYTE.SYS.                          │
  585.                       └─────────────────────────────────────────────────┘ 
  586.  
  587.                       The  "?" in the first line is intentional - it
  588.                       directs   The  Last  Byte  Memory  Manager  to
  589.                       display  what  it  finds  in  the upper memory
  590.                       address space.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  601.  
  602.  
  603.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              11
  604.  
  605.  
  606.              Step 5:  Create an AUTOEXEC.BAT file on the floppy that
  607.                       contains the lines: 
  608.  
  609.                               HIGHMARK 
  610.                               HIGHTSR CLOCK 
  611.  
  612.              Step 6: Boot from the floppy.  
  613.  
  614.                       ┌─────────────────────────────────────────────────┐
  615.                       │ NOTE: Some memory controller chips provide a    │
  616.                       │ setup option to use some of the shadow ram as   │
  617.                       │ extended memory by relocating it above the      │
  618.                       │ 1 Meg boundary.  This option must be disabled   │
  619.                       │ in the CMOS Setup Configuration Menu.           │ 
  620.                       └─────────────────────────────────────────────────┘ 
  621.  
  622.  
  623.         If  everything  goes  ok,  you'll  see  a  sign-on box that looks
  624.         something like the following: 
  625.  
  626.         ╔═══════════════════════════════════════════════════════════════════╗
  627.         ║         THE LAST BYTE MEMORY MANAGER (tm) Version 1.20a           ║
  628.         ║ Copyright (C) 1990-91, Key Software Products, All Rights Reserved ║
  629.         ║                   Licensed for EVALUATION ONLY                    ║
  630.         ╟───────────────────────────────────────────────────────────────────╢
  631.         ║         25.0 Mhz 80386 with Chips & Technologies 82C302c          ║
  632.         ╟───────────────────────────────────────────────────────────────────╢
  633.         ║  Address Range  Size    Width    Bandwidth    Description         ║
  634.         ║   00000-9FFFF  640 KB  32 bits  38.0 MB/Sec   Conventional Memory ║
  635.         ║   A0000-FFFFF  384 KB  32 bits  38.0 MB/Sec   Shadow Ram Memory   ║
  636.         ║   A0000-BFFFF  128 KB  16 bits   3.1 MB/Sec   VGA Display Buffer  ║
  637.         ║   C0000-C7FFF   32 KB  16 bits   3.1 MB/Sec   Adapter R/O Memory  ║
  638.         ║   C8000-CB7FF   14 KB   8 bits   1.3 MB/Sec   Adapter R/O Memory  ║
  639.         ║   CB800-CBFFF    2 KB   8 bits   1.3 MB/Sec   Adapter R/W Memory  ║
  640.         ║   F0000-FFFFF   64 KB  16 bits   3.1 MB/Sec   Bios (Boot) Rom     ║
  641.         ╟───────────────────────────────────────────────────────────────────╢
  642.         ║ Conventional  High-DOS     Bank-Switch   Shadowed Roms  Excluded  ║
  643.         ║     640k        32k            32k            96k         224k    ║
  644.         ╟───────────────────────────────────────────────────────────────────╢
  645.         ║ The Last Byte Memory Manager is a trademark of Key Software Prod. ║
  646.         ╚═══════════════════════════════════════════════════════════════════╝
  647.  
  648.         If  your  computer  stops  before displaying the entire box shown
  649.         above,  or  if  it  fails to operate properly after booting, this
  650.         may  be  because  The Last Byte Memory Manager failed to identify
  651.         one  of  your  installed  adapters  that uses some portion of the
  652.         upper  memory  address  space.   If this happens, you'll probably
  653.         need  to  use  an  "EXCLUDE="  option on the LASTBYTE.SYS command
  654.         line  to  manually  disable  the  corresponding  region(s)  where
  655.         conflict  occurs.   To  temporarily  get around this problem, you
  656.         can  reboot  and manually bypass all The Last Byte Memory Manager
  657.  
  658.  
  659.  
  660.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  661.  
  662.  
  663.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              12
  664.  
  665.  
  666.         device  drivers  and  TSR's  by  simultaneously  holding down the
  667.         <left shift>, <alt>, and <ctrl> keys during the boot sequence.  
  668.  
  669.         After  AUTOEXEC.BAT  is  finished,  you'll  see  the current time
  670.         displayed  in inverse video in the upper left-hand corner of your
  671.         screen.   This  verifies  that  HIGHTSR  has  successfully loaded
  672.         CLOCK  into  upper  memory.   You  can  verify  that  ANSI.SYS is
  673.         installed and operating by using the commands: 
  674.  
  675.                 TYPE COLS.40 
  676.  
  677.                         {switches display to 25 rows by 40 columns}, or 
  678.  
  679.                 TYPE COLS.80 
  680.  
  681.                         {switches display to 25 rows by 80 columns}.  
  682.  
  683.         (These  commands  will  display garbage on the screen if ANSI.SYS
  684.         has not been installed.) 
  685.  
  686.         Once  you  are  convinced  that  The  Last Byte Memory Manager is
  687.         working  satisfactorily,  you  may  copy it to your hard disk and
  688.         modify the CONFIG.SYS and AUTOEXEC.BAT files there accordingly.  
  689.  
  690.  
  691.         4.2 Mapping Upper Memory with HIGHMEM     
  692.  
  693.         Now  run  HIGHMEM to display a map of upper memory.  Depending on
  694.         what  adapter  cards  you have installed, HIGHMEM's output should
  695.         look something like that shown below.  
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  721.  
  722.  
  723.       Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              13
  724.  
  725.  
  726.       HIGHMEM v1.20a (C) Key Software Products 1990-91. All Rights Reserved.
  727.  
  728.       MCB  Hex Address Description [Type] <Mark> High-DOS Bnk-Swtch  Total
  729.       ──── ─────────── ───────────────────────── ──────── ───────── ───────
  730.       B000 A0000-AFFFF Reserved Memory Group:                       
  731.       B79D A0000-A042F ╠═TSR Marker          <1>             1,072  
  732.       B002 A0000-A042F ║ └─8-bit EGA Graphics Buffer                  1,072
  733.       B79B A0430-A7FFF ╠═8-bit EGA Graphics Buffer        [ 31,696] [31,696]
  734.       B004 A8000-AFFFF ╚═8-bit EGA Graphics Buffer                   32,768
  735.       B006 B0070-B10CF ANSI           [DEV]        4,192              4,192
  736.       B10D B10E0-B112F CLOCK          [ENV]  <1>      80                 80
  737.       B113 B1140-B12EF CLOCK          [TSR]  <1>     432                432
  738.       B12F B1300-B79AF [∙∙∙Free∙∙∙]             [ 26,288]           [26,288]
  739.       B79F B7A00-B7EFF LASTBYTE       [DEV]        1,280              1,280
  740.       B7FE B8000-FFFFF Reserved Memory Group:                       
  741.       B7F0 B8000-BFFFF ╠═8-bit EGA Text Buffer                       32,768
  742.       B7F2 C0000-C3FFF ╠═Shadowed 8-bit Rom                          16,384
  743.       B7F4 C4000-C7FFF ╠═Excluded Block                              16,384
  744.       B7F6 C8000-CB7FF ╠═8-bit Adapter Rom                           14,336
  745.       B7F8 CB800-CBFFF ╠═8-bit Adapter Ram                            2,048
  746.       B7FA CC000-EFFFF ╠═Excluded Block                             147,456
  747.       B7FC F0000-FFFFF ╚═Shadowed 16-bit Bios                        65,536
  748.                                                  ───────   ───────  ───────
  749.                             Upper Memory In Use:   5,984     1,072  334,736
  750.                             [Free Upper Memory]:  26,288    31,696   57,984
  751.                                    MCB Overhead:     496       n/a      496
  752.                                                  ───────   ───────  ───────
  753.                              Total Upper Memory:  32,768    32,768  393,216
  754.  
  755.  
  756.         This  listing  is for a computer with a 8-bit EGA display adapter
  757.         and  an  8-bit  SCSI hard disk adapter.  The "Shadowed 8-bit Rom"
  758.         at  C0000-C3FFF  is  the EGA Bios and the "8-bit Adapter Rom" and
  759.         "8-bit Adapter Ram" are on the SCSI adapter card.  
  760.  
  761.         The  column  labelled "Bnk-Swtch" shows which entries can be used
  762.         as  bank-switch  memory for a ram disk, a print spooler, emulated
  763.         EMS memory, or TSR markers.  
  764.  
  765.         Numbers  enclosed in brackets (e.g., "[ 26,128]") refer to memory
  766.         that  is  available for use.  Once you have licensed your copy of
  767.         The  Last  Byte  Memory Manager, the "Excluded Block" shown above
  768.         would  be  added  to the free High-DOS memory pool, and the other
  769.         entries  labelled  "EGA  ...  Buffer"  would be added to the free
  770.         bank-switch memory pool.  
  771.  
  772.         The  column  labelled "Mark" is used in conjunction with HIGHMARK
  773.         and  HIGHUNDO.   In  particular,  you  may  have wondered why the
  774.         command  HIGHMARK  was  included in the AUTOEXEC.BAT file.  Since
  775.         it  was  executed  before running HIGHTSR CLOCK, you are now able
  776.         to remove the clock from memory by simply running HIGHUNDO.  
  777.  
  778.  
  779.  
  780.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  781.  
  782.  
  783.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              14
  784.  
  785.  
  786.  
  787.                          Paging the output of HIGHMEM   
  788.  
  789.              You  may  use  the  "/Page"  (or simply "/P") option of
  790.              HIGHMEM  to force the output to pause after each screen
  791.              full.  
  792.  
  793.  
  794.  
  795.         4.3 Running the LICENSE Program      
  796.  
  797.         The   Last   Byte  Memory  Manager  is  distributed  as  a  fully
  798.         functional  set  of  software.  In its original form, you will be
  799.         able to use all the features, but with three restrictions: 
  800.  
  801.  
  802.              o  The  amount of upper memory available to you will be
  803.                 limited  to  32k  of High-DOS memory and another 32k
  804.                 of Bank-Switch memory, and 
  805.  
  806.              o  The  maximum  number  of  device drivers and/or TSRs
  807.                 will be limited to 2.  
  808.  
  809.              o  The HOLE option of LASTBYTE.SYS is not available.  
  810.  
  811.  
  812.         Access  to the rest of upper memory requires that your name and a
  813.         personal  eight-character  access  key  be inserted into the file
  814.         LASTBYTE.SYS.   The  access key may be obtained directly from Key
  815.         Software  Products  or  one of the authorized distributors listed
  816.         at  the  end  of  this  document.   Installation  of  the  key is
  817.         accomplished  by  the program called LICENSE.EXE that is included
  818.         in the distribution.  
  819.  
  820.         The  LICENSE  program  must  be run on the same computer on which
  821.         you  intend  to  install  The  Last Byte Memory Manager.  LICENSE
  822.         computes  a hardware "signature" and installs that signature into
  823.         LASTBYTE.SYS;  when  invoked,  it  recomputes  the  signature and
  824.         compares  it  against the one inserted by LICENSE.  If the two do
  825.         not  agree,  LASTBYTE.SYS  will issue an error message and refuse
  826.         to install.  
  827.  
  828.         LICENSE  tries  to  determine the memory controller type and then
  829.         records  it  in  the  LASTBYTE.SYS file.  This works fine on most
  830.         systems,  but  occassionally the necessary sequence of tests that
  831.         LICENSE  must perform will cause the computer to "hang".  You can
  832.         avoid  this  test  by  manually  specifying the memory controller
  833.         type  on  the  command  line when you run the LICENSE program, as
  834.         in: 
  835.  
  836.                 A>LICENSE 82C812 
  837.  
  838.  
  839.  
  840.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  841.  
  842.  
  843.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              15
  844.  
  845.  
  846.  
  847.         For  a  complete list of memory controller types, see the section
  848.         titled "LASTBYTE.SYS" later in this manual.  
  849.  
  850.                 ╔═════════════════════════════════════════════════╗
  851.                 ║ WARNING: If you change your hardware configur-  ║ 
  852.                 ║ ation, you will need to run LICENSE again.  You ║ 
  853.                 ║ can use LICENSE to recompute the signature in a ║ 
  854.                 ║ previously licensed copy of LASTBYTE.SYS, but   ║ 
  855.                 ║ only with the same user name and access key.    ║ 
  856.                 ╚═════════════════════════════════════════════════╝
  857.  
  858.         Once   you   have   installed  your  name  and  access  key  into
  859.         LASTBYTE.SYS  you  will  immediately  have  access to the rest of
  860.         upper  memory.   No other files, diskettes, or manuals need to be
  861.         ordered.   We  do  not  send out a new diskette or printed manual
  862.         when  you  order an access key; otherwise the price would have to
  863.         be  greater.   You  may obtain your access key by mail by filling
  864.         out  the  order  form  (included  in  the  file ORDERFRM.DOC) and
  865.         mailing  it  with the calculated amount to Key Software Products,
  866.         or  by contacting one of our distributors.  If you order by mail,
  867.         be  sure to print your name clearly - it will be displayed in the
  868.         sign-on  screen  of  LASTBYTE.SYS  and  is used to determine your
  869.         access key.  
  870.  
  871.  
  872.  
  873.  
  874.  
  875.  
  876.  
  877.  
  878.  
  879.  
  880.  
  881.  
  882.  
  883.  
  884.  
  885.  
  886.  
  887.  
  888.  
  889.  
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898.  
  899.  
  900.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  901.  
  902.  
  903.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              16
  904.  
  905.  
  906.                     CHAPTER 5 - DETAILED DESCRIPTIONS       
  907.  
  908.  
  909.         A  complete  detailed  description of the command line syntax and
  910.         options  of  each  device  driver and utility program in The Last
  911.         Byte  Memory  Manager  is  provided below.  With the exception of
  912.         LASTBYTE.SYS   which   comes   first,   they   are  organized  in
  913.         alphabetical order for ease of reference.  
  914.  
  915.  
  916.         5.1 LASTBYTE.SYS         
  917.  
  918.         During  initialization,  LASTBYTE.SYS  scans upper memory looking
  919.         for  Bios  ROMs,  display  ram, and adapter cards that occupy the
  920.         upper  memory  area.   The  unoccupied  portion  of  upper memory
  921.         defaults  to  High-DOS memory (for device drivers and TSR's).  If
  922.         your  computer uses one of the supported memory controller chips,
  923.         the  occupied  portion  of  the upper memory area will default to
  924.         Bank-Switch  memory  that can be made accessible for Ram disks, a
  925.         Print Buffer, emulated EMS memory, etc.  
  926.  
  927.         These  defaults  can  be  modified  by  the  use  of command line
  928.         options.    There   are   several   command   line   options  for
  929.         LASTBYTE.SYS.  Many of these use a format like: 
  930.  
  931.                 <keyword>=<base>:<size> 
  932.  
  933.         where  "<keyword>"  is  one  of  the  option  keywords and may be
  934.         abbreviated  by  its  first  letter,  "<base>"  is  a  four-digit
  935.         hexadecimal  segment  address  in  the  range  A000  to FC00, and
  936.         "<size>" is a decimal number in kilobytes.  
  937.  
  938.         There are two restrictions on these options: 
  939.  
  940.              o  The  base must be exactly 4 hexadecimal digits, must
  941.                 lie  at  or  above  A000,  and must be a multiple of
  942.                 0020  (512  bytes).   (For  APPEND,  the  base  must
  943.                 always be A000, or may be omitted.) 
  944.  
  945.              o  The size must be in the range 1-384 kb.  
  946.  
  947.         The  "multiple  of 0020" requirement for the base is necessary to
  948.         be  consistent  with  the  way  that The Last Byte Memory Manager
  949.         organizes  high  memory  during  initialization.   However,  this
  950.         requirement  is  often  affected by the coarser resolution of the
  951.         memory controllers: 
  952.  
  953.         The  upper area is partitioned into blocks.  Some controllers use
  954.         16k  blocks,  some use 32k blocks, and some use 64k blocks.  Each
  955.         block  must  be either totally enabled or disabled.  I.e., if any
  956.         part  of  a  block's address space is disabled by the presence of
  957.  
  958.  
  959.  
  960.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  961.  
  962.  
  963.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              17
  964.  
  965.  
  966.         an  adapter  card,  the  entire  block  of memory is disabled and
  967.         cannot be made available as High-DOS Memory.  
  968.  
  969.              APPEND=<base>:<size>  -or-  APPEND=<size> 
  970.  
  971.                   Allocates  a  region of upper memory for appending
  972.                   to   the   end   of   conventional   memory,  thus
  973.                   increasing  it  beyond  640k.   The  memory is NOT
  974.                   added  until  it  is  enabled  with  HIGHAPND.  If
  975.                   "<base>"   is  used,  it  must  be  A000.   (Note:
  976.                   "<size>"  is  limited  to  16k  in  the unlicensed
  977.                   version  so  that  some High-DOS memory will still
  978.                   be available.) 
  979.  
  980.                   For  example,  to  force  the  64k  address  range
  981.                   starting  at  segment  A000  to be appended to the
  982.                   end  of  the  640k  of  Conventional  memory,  the
  983.                   proper option syntax would be: 
  984.  
  985.                                       APPEND=64
  986.  
  987.              BANKSWITCH=<base>:<size> 
  988.  
  989.                   Forces   a  region  of  upper  memory  that  would
  990.                   normally  be  used  as  High-DOS memory to be made
  991.                   available as Bank-Switch memory.  
  992.  
  993.                   ┌─────────────────────────────────────────────────┐
  994.                   │ This option requires a memory controller chip.  │
  995.                   └─────────────────────────────────────────────────┘ 
  996.  
  997.              CACHE  -or-  CACHE=<kbytes> 
  998.  
  999.                   Forces  LASTBYTE.SYS  to  think  that  there  is a
  1000.                   cache  between the CPU and main memory.  (This has
  1001.                   nothing  to do with disk caching!)  This option is
  1002.                   not      normally      necessary;     LASTBYTE.SYS
  1003.                   automatically  detects  the  presence  of a cache.
  1004.                   If  not specified, the cache size is assumed to be
  1005.                   256k;  other  sizes may be specified by the second
  1006.                   form.  
  1007.  
  1008.                   Activating  bank-switch memory causes the contents
  1009.                   of  a  cache  (if  present) to be invalid; this is
  1010.                   known  as a "cache coherency" problem.  If a cache
  1011.                   is   detected  during  installation,  LASTBYTE.SYS
  1012.                   checks  to see if any portion of the upper address
  1013.                   space  is cached.  If not, then no cache coherency
  1014.                   problem exists.  
  1015.  
  1016.                   If  the  upper  address  space is cached, however,
  1017.  
  1018.  
  1019.  
  1020.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  1021.  
  1022.  
  1023.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              18
  1024.  
  1025.  
  1026.                   LASTBYTE.SYS  will flush the cache on every access
  1027.                   to  Bank-Switch  memory  in  order  to prevent the
  1028.                   cache  from providing invalid data to the CPU.  On
  1029.                   a   486  it  does  this  by  executing  a  special
  1030.                   instruction  that  resets  the  cache.   On  other
  1031.                   processors,  the  cache  is  flushed by filling it
  1032.                   from  low  memory.   In  the latter case, the size
  1033.                   value  discussed  above  is  used to determine how
  1034.                   much to fill.  
  1035.  
  1036.  
  1037.              DOS=<base>:<size> 
  1038.  
  1039.                   Forces   a  region  of  upper  memory  that  would
  1040.                   normally  be used as Bank-Switch memory to be made
  1041.                   available as High-DOS memory.  
  1042.  
  1043.  
  1044.              EXCLUDE=<base>:<size> 
  1045.  
  1046.                   Forces  a  region  of  upper memory unavailable as
  1047.                   either High-DOS or Bank-Switch memory.  
  1048.  
  1049.              OVERRIDE 
  1050.  
  1051.                   Many  memory controller chips can move all or part
  1052.                   of  shadow  ram  to  the top of (extended) memory.
  1053.                   If  LASTBYTE.SYS  fails  to install with the error
  1054.                   message:      "Shadow      Ram      memory      is
  1055.                   relocated/remapped",   try   adding  the  Override
  1056.                   option  to  the  LASTBYTE.SYS  command line.  This
  1057.                   disables  any shadow ram relocation that may be in
  1058.                   effect,  regardless  of  your  CMOS  configuration
  1059.                   menu  setup.  The CMOS setup menu of your BIOS may
  1060.                   also  provide  an  option  to  disable  relocation
  1061.                   directly,   but  there  are  some  that  determine
  1062.                   whether   to   relocate  or  not  based  on  other
  1063.                   configuration options.   
  1064.  
  1065.  
  1066.              HOLE=<base>:<size> 
  1067.  
  1068.                   Creates  a  "hole"  of free High-DOS memory within
  1069.                   the  address space of a ROM that is shadowed.  Use
  1070.                   the  HIGHHOLE  program  to  determine  where these
  1071.                   holes  are  located,  and the corresponding values
  1072.                   of <base> and <size>.  
  1073.  
  1074.  
  1075.  
  1076.  
  1077.  
  1078.  
  1079.  
  1080.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  1081.  
  1082.  
  1083.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              19
  1084.  
  1085.  
  1086.                   ┌─────────────────────────────────────────────────┐
  1087.                   │ NOTES: (1) The HOLE option is not available in  │
  1088.                   │ the unlicensed version of LASTBYTE.SYS. (2) The │
  1089.                   │ <base> and <size> parameters of the HOLE option │
  1090.                   │ are different from other options: <size> is in  │
  1091.                   │ bytes and must be a multiple of 16; <base> may  │
  1092.                   │ be any hexadecimal value from A000 to FFFF.     │
  1093.                   └─────────────────────────────────────────────────┘
  1094.  
  1095.              MOVEXBDA 
  1096.  
  1097.                   This  option relocates the Extended Bios Data Area
  1098.                   (XBDA),  if  it  exists,  into  Upper Memory.  The
  1099.                   XBDA   is  usually  1k  reserved  at  the  top  of
  1100.                   conventional  memory  by  the  main Bios.  Not all
  1101.                   machines   use   an   XBDA,   but  if  it  exists,
  1102.                   LASTBYTE.SYS  will  report  639k  of  Conventional
  1103.                   Memory  instead  of 640k, and HIGHAPND will refuse
  1104.                   to  append  any  memory.   Some  machines  may not
  1105.                   operate  properly  with  a  relocated XBDA, so use
  1106.                   this   option   with  caution.   (Note  that  some
  1107.                   computer  viruses  also  "steal"  the  top  1k  of
  1108.                   memory.) 
  1109.  
  1110.              NOFRAME 
  1111.  
  1112.                   May  be  used in conjunction with the EMS4 or EEMS
  1113.                   options  (see  below) to use the 64k page frame as
  1114.                   High-DOS   Memory.    Doing   so   disables  other
  1115.                   (normal) use of all expanded memory.  
  1116.  
  1117.                   ┌─────────────────────────────────────────────────┐
  1118.                   │ NOTE: The EMS3 and EMS3/4 options imply NOFRAME │
  1119.                   └─────────────────────────────────────────────────┘ 
  1120.  
  1121.              RESTRICT=<ab>,<cd>,<ef> 
  1122.  
  1123.                   Address  lines  A15  and  A16  are  not latched in
  1124.                   hardware  design of the AT bus.  As a consequence,
  1125.                   some  16-bit  adapter cards do not properly decode
  1126.                   these   address   lines  within  the  narrow  time
  1127.                   constraints  imposed  by  the Address Latch Enable
  1128.                   (ALE)  signal, and will occassionally respond to a
  1129.                   memory  access  that  is  directed  at  some other
  1130.                   portion  of  the  address space.  Thinking that it
  1131.                   is  for  them, they force the transfer into 16-bit
  1132.                   mode  even  though the intended recipient requires
  1133.                   8-bit  mode,  and  thus cause erroneous data to be
  1134.                   transferred  to  the  bytes  in  the  odd-numbered
  1135.                   addresses.  
  1136.  
  1137.  
  1138.  
  1139.  
  1140.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  1141.  
  1142.  
  1143.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              20
  1144.  
  1145.  
  1146.                   The  most  common  (and damaging) occurence occurs
  1147.                   during  the  8-bit  DMA transfers between a floppy
  1148.                   disk  drive  and  upper  memory  near  the address
  1149.                   space  occupied  by  an  offending  16-bit adapter
  1150.                   card.  
  1151.  
  1152.                   Due  to organization of the address signals on the
  1153.                   AT  bus,  this  phenomena only occurs when the two
  1154.                   address  areas  are  within  the same 128k region.
  1155.                   There  are  three  such regions in the upper area:
  1156.                   A0000-BFFFF,    C0000-DFFFF,    and   E0000-FFFFF.
  1157.                   LASTBYTE.SYS  automatically senses the presence of
  1158.                   16-bit  adapter  cards  in  each  of  these  three
  1159.                   regions  and  records  this information within its
  1160.                   resident   image   for   use   by  its  utilities.
  1161.                   LASTBYTE.SYS  skips  this  test if it detects a PC
  1162.                   with  a  Micro  Channel  bus (like the PS/2) since
  1163.                   problem was corrected in its design.  
  1164.  
  1165.                   The  RESTRICT  option is provided to override this
  1166.                   automatic  detection  of 16-bit adapters.  Each of
  1167.                   the  three  arguments (one per 128k region) should
  1168.                   be  replaced  by  either "0" (indicating no 16-bit
  1169.                   adapters),  or  "1"  (indicating the presense of a
  1170.                   16-bit adapter).  
  1171.  
  1172.                   For   example,  the  option  RESTRICT=1,1,0  would
  1173.                   imply   that  one  or  more  16-bit  adapters  are
  1174.                   located  in  the  first  two 128k regions of upper
  1175.                   memory  (A000-DFFF),  so  that  when the /RESTRICT
  1176.                   option  of  HIGHDRVR,  HIGHTSR, HIGHINST, HIGHUMM,
  1177.                   HIGHEMS3,  and  HIGHEMS4  is  used,  only High-DOS
  1178.                   memory   in   the   region   E000-FFFF   will   be
  1179.                   allocated.   This is the default for HIGHBFRS, but
  1180.                   may   be   disabled  by  use  of  its  /NORESTRICT
  1181.                   option.  
  1182.  
  1183.              SHADOW=<base>:<size> 
  1184.  
  1185.                   Forces  a  region of memory (presumably ROM) to be
  1186.                   copied   into   shadow  ram.   If  other  hardware
  1187.                   outside  the specified region, but within the same
  1188.                   memory   controller   block  conflicts  with  this
  1189.                   request,  a  corresponding  error  message will be
  1190.                   displayed    and    LASTBYTE.SYS   will   not   be
  1191.                   installed.  
  1192.  
  1193.                   ┌─────────────────────────────────────────────────┐
  1194.                   │ This option requires a memory controller chip.  │
  1195.                   └─────────────────────────────────────────────────┘ 
  1196.  
  1197.  
  1198.  
  1199.  
  1200.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  1201.  
  1202.  
  1203.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              21
  1204.  
  1205.  
  1206.              36C300, 62C202, 62C241, 62C251, 82C202,
  1207.              82C212, 82C222, 82C230, 82C235, 82C241,
  1208.              82C281, 82C282, 82C302, 82C302c,82C307,
  1209.              82C311, 82C322, 82C351, 82C361, 82C382,
  1210.              82C391, 82C461, 82C481, 82C482, 82C491,
  1211.              82C812, 82C836, 82C841, 82411,  82S411,
  1212.              EMS3,   EMS3/4, EMS4,   EEMS,   FIXED
  1213.  
  1214.                   Each   of   these   command  line  options  forces
  1215.                   LASTBYTE.SYS   to   assume   a  particular  memory
  1216.                   controller  device.   Normally,  LASTBYTE.SYS will
  1217.                   automatically   detect   what's  installed;  these
  1218.                   options  are  for  those  rare  occasions when the
  1219.                   automatic   detection   fails.   (Note:  EMS3  and
  1220.                   EMS3/4  automatically  enable  the  NOFRAME option
  1221.                   described above.) 
  1222.  
  1223.              ? (A question mark) 
  1224.  
  1225.                   Causes  LASTBYTE.SYS  to erase the screen, display
  1226.                   a  summary  of  what  it finds in the upper memory
  1227.                   area,  and  pause for two seconds to give the user
  1228.                   an   opportunity  to  read  the  information.   To
  1229.                   freeze  this  display  for  a longer period, press
  1230.                   <Ctrl>-S;   then   to   continue  with  CONFIG.SYS
  1231.                   processing, press any key.  
  1232.  
  1233.  
  1234.         5.2 HIGHAPND.EXE and HIGHAPND.SYS       
  1235.  
  1236.         HIGHAPND.EXE  is  a  program that can only be used in conjunction
  1237.         with  the  "APPEND="  option  of LASTBYTE.SYS.  HIGHAPND.SYS is a
  1238.         device  driver  version  of  HIGHAPND.EXE.  Either can be used to
  1239.         append  some of the upper memory that begins at 640k onto the end
  1240.         of conventional memory (and also to return later to 640k).  
  1241.  
  1242.         Monochrome  (MDA),  Hercules,  and CGA display adapters don't use
  1243.         the  64k  region starting at A000, and so this memory can be used
  1244.         to  extend  conventional memory from 640k to 704k, provided there
  1245.         is  available  read/write  memory  in  this  area.   CGA  display
  1246.         adapters  also  don't  use  the next 32k either, and so CGA users
  1247.         may be able to extend conventional memory all the way to 736k.  
  1248.  
  1249.         EGA  and  VGA  display adapters have a 64k hi-resolution graphics
  1250.         display  buffer  that  is  located  at A000.  This buffer is only
  1251.         needed  when you are using only hi-resolution graphics.  When the
  1252.         display  is  in either text or low-resolution CGA graphics modes,
  1253.         this  memory  is  not  used,  and may be replaced (switched) with
  1254.         shadow  ram memory if available, or the display buffer itseld may
  1255.         be  used  to  extend conventional memory.  Since most EGA and VGA
  1256.         adapters  usually  don't use the 32k region at B000, you may even
  1257.  
  1258.  
  1259.  
  1260.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  1261.  
  1262.  
  1263.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              22
  1264.  
  1265.  
  1266.         be able to extend conventional memory up to 736k.  
  1267.  
  1268.         You  may either use HIGHAPND.SYS during CONFIG.SYS processing, as
  1269.         in: 
  1270.  
  1271.                 DEVICE=HIGHAPND.SYS ON  {Extends conv. memory beyond 640k}
  1272.                         . . .
  1273.                 DEVICE=HIGHAPND.SYS OFF {Resets conv. memory to 640k}
  1274.  
  1275.                 ╔═════════════════════════════════════════════════╗
  1276.                 ║ WARNING: HIGHAPND.SYS may not work properly     ║ 
  1277.                 ║ with some versions of MS-DOS; in such cases,    ║ 
  1278.                 ║ use HIGHAPND.EXE instead.  There is no benefit  ║ 
  1279.                 ║ to using HIGHDRVR.SYS to load HIGHAPND.SYS      ║ 
  1280.                 ║ because it never stays resident.                ║ 
  1281.                 ╚═════════════════════════════════════════════════╝
  1282.  
  1283.         or  use  HIGHAPND.EXE  during  AUTOEXEC.BAT processing (or at any
  1284.         time after the computer is booted), as in: 
  1285.  
  1286.                 A>HIGHAPND ON   {Extends conv. memory beyond 640k}
  1287.                         . . .
  1288.                 A>HIGHAPND OFF  {Resets conv. memory to 640k}
  1289.  
  1290.                 ╔═════════════════════════════════════════════════╗
  1291.                 ║ WARNING: HIGHAPND.EXE may not work properly     ║ 
  1292.                 ║ with DR DOS. In such cases, use HIGHAPND.SYS.   ║ 
  1293.                 ╚═════════════════════════════════════════════════╝
  1294.  
  1295.  
  1296.         Don't  forget  -  both  HIGHAPND.SYS and HIGHAPND.EXE require the
  1297.         use of an APPEND option on the LASTBYTE command line.  
  1298.  
  1299.         HIGHAPND  can  be  used  without  any  command  line  options  to
  1300.         determine  the  current size of conventional memory and the state
  1301.         of EGA/VGA hi-resolution graphics: 
  1302.  
  1303.                 A>HIGHAPND 
  1304.  
  1305.         You  can  put  these  commands  into  a  batch  file  to simplify
  1306.         switching  back  and  forth.   For example, if you want the extra
  1307.         memory  all  the  time  except  when you need hi-res graphics for
  1308.         Microsoft Windows, create a batch file like the following: 
  1309.  
  1310.                 @ECHO OFF 
  1311.                 HIGHAPND OFF 
  1312.                 WIN %1 %2 
  1313.                 HIGHAPND ON 
  1314.  
  1315.         HIGHAPND  will automatically disable any EGA or VGA hi-resolution
  1316.         graphics   capability   whenever  conventional  memory  has  been
  1317.  
  1318.  
  1319.  
  1320.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  1321.  
  1322.  
  1323.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              23
  1324.  
  1325.  
  1326.         extended  beyond  640k.   This  makes  software  that attempts to
  1327.         sense  what  type  of display adapter is installed think that you
  1328.         have  only  a  CGA  adapter.   Later,  when you need the graphics
  1329.         capability,   you   can   disable   the   memory   extension  and
  1330.         hi-resolution graphics will be automatically re-enabled.  
  1331.  
  1332.         If  you  have  hi-res  graphics  disabled  and run a program that
  1333.         tries  to use hi-res graphics without first sensing for an EGA or
  1334.         VGA  adapter,  LASTBYTE.SYS  will  notice  the conflict, issue an
  1335.         error   message,   and  terminate  the  program.   Some  programs
  1336.         redirect  a  few  interrupts during their initialization and then
  1337.         restore  them  before termination.  LASTBYTE.SYS's termination of
  1338.         graphics  programs  doesn't know how to restore these interrupts,
  1339.         so  in  some cases you may have to reboot the computer.  In other
  1340.         words,  if  you  experience this kind of program termination with
  1341.         an  application  program, it's best to reboot and prepare a batch
  1342.         file (as shown above) to run the program.  
  1343.  
  1344.         HIGHAPND  provides  more  detailed  control  over this protection
  1345.         through  the  /HIRESGFX  option  as described below.  This may be
  1346.         helpful,  for  example,  with software that uses the 43 (50) line
  1347.         text  mode of the EGA (VGA) adapter.  (The setting of this option
  1348.         is only meaningful when HIGHAPND ON is in effect.) 
  1349.  
  1350.              /HIRESGFX=TRAPPED 
  1351.  
  1352.                   Disables   all  EGA/VGA  high-resolution  graphics
  1353.                   functions  provided  by  video  BIOS interrupt 10h
  1354.                   and   makes   programs  think  a  CGA  adapter  is
  1355.                   installed.  (This is the default.) 
  1356.  
  1357.              /HIRESGFX=SENSED 
  1358.  
  1359.                   Disables   all  EGA/VGA  high-resolution  graphics
  1360.                   functions  provided  by  video BIOS interrupt 10h,
  1361.                   but  does  let  programs  sense the presence of an
  1362.                   EGA or VGA adapter.  
  1363.  
  1364.              /HIRESGFX=ALLOWED 
  1365.  
  1366.                   Allows  all  video  BIOS  interrupt  10h  function
  1367.                   calls,  even  if  they  might  use the 64k EGA/VGA
  1368.                   graphics display buffer at A000-AFFF.  
  1369.  
  1370.                               Technical Note      
  1371.  
  1372.              HIGHAPND  requires  either  a memory controller chip or
  1373.              an   EGA   or  VGA  display  adapter.   If  the  memory
  1374.              controller  chip  can enable shadow ram memory at A000,
  1375.              then   shadow   ram  memory  will  be  used  to  extend
  1376.              conventional  memory;  otherwise, HIGHAPND will convert
  1377.  
  1378.  
  1379.  
  1380.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  1381.  
  1382.  
  1383.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              24
  1384.  
  1385.  
  1386.              the  graphics  display buffer of the EGA or VGA display
  1387.              adapter into an extension of conventional memory.  
  1388.  
  1389.  
  1390.  
  1391.         5.3 HIGHBFRS.EXE (MS-DOS 3 only)      
  1392.  
  1393.                 ╔═════════════════════════════════════════════════╗
  1394.                 ║ WARNING:  Placing MS-DOS buffers in high memory ║
  1395.                 ║ can result in the loss of data.  I.e., it can   ║
  1396.                 ║ damage the directory and file allocation tables ║
  1397.                 ║ of your disk.  Read everything in this section  ║
  1398.                 ║ before considering the use of this utility.     ║
  1399.                 ╚═════════════════════════════════════════════════╝
  1400.  
  1401.         HIGHBFRS  can  be  used  to  place  MS-DOS  3.x  buffers in upper
  1402.         memory,  but  you  must  be  careful that this does not cause DMA
  1403.         transfers  into  a  128k  region  of  memory  containing a 16-bit
  1404.         adapter,  or else you may damage the data on your disk.  (See the
  1405.         discussion  of  the  "RESTRICT" option of LASTBYTE.SYS.) HIGHBFRS
  1406.         offers  two  solutions  to  this problem: The first (and default)
  1407.         solution  is  to  restrict  buffer  placement  to particular 128k
  1408.         regions where there is no conflict.  
  1409.  
  1410.         If  all three 128k regions contain 16-bit adapters, then a second
  1411.         (different)  solution  may  be both necessary and sufficient.  It
  1412.         intercepts   transfers  between  floppy  disk  drives  and  upper
  1413.         memory,  and  redirects  the  transfer  through  an  intermediate
  1414.         sector  buffer  in  conventional (low) memory.  The corresponding
  1415.         command line option would be: 
  1416.  
  1417.                                 HIGHBFRS /FLOPPY
  1418.  
  1419.         Almost  all  hard  disk  controllers  use 16-bit CPU instructions
  1420.         (rather  than  DMA)  to  transfer data and thus do not incur this
  1421.         problem.   
  1422.  
  1423.         HIGHBFRS   defaults   to   the  maximum  number  of  buffers  and
  1424.         automatically  determines  the  safest  location for loading them
  1425.         into  upper memory by checking with LASTBYTE.SYS for the location
  1426.         of  16-bit  adapter  cards,  if  any.   If none of the three 128k
  1427.         segments  is  considered  "safe",  it will enable interception of
  1428.         floppy  transfers.   Any  of  these defaults can be overridden by
  1429.         one or more of the following command line options: 
  1430.  
  1431.              BUFFERS=<number> 
  1432.  
  1433.                   Changes  the number of MS-DOS buffers to the value
  1434.                   specified;  "<number>"  is  a number from 1-99, or
  1435.                   may be replaced by the word "MAXIMUM".  
  1436.  
  1437.  
  1438.  
  1439.  
  1440.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  1441.  
  1442.  
  1443.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              25
  1444.  
  1445.  
  1446.              /NORESTRICT (Abbreviated "/N") 
  1447.  
  1448.                   Disables   the   default   restriction  on  buffer
  1449.                   placement   caused   by  the  presence  of  16-bit
  1450.                   adapter  cards  or by use of the "RESTRICT" option
  1451.                   on the LASTBYTE.SYS command line.  
  1452.  
  1453.              /FLOPPY (Abbreviated "/F") 
  1454.  
  1455.                   Enables  redirection  of  Bios  INT 13h calls that
  1456.                   attempt  to  transfer  data  between a floppy disk
  1457.                   drive  and  upper  memory.   If  redirected,  such
  1458.                   transfers   go   through  an  intermediate  buffer
  1459.                   located   in   conventional   memory.    (Disables
  1460.                   restrictions on buffer placement.) 
  1461.  
  1462.         When  HIGHBFRS  is  invoked  with  no  command line arguments, it
  1463.         simply  reports the number of MS-DOS buffers presently located in
  1464.         upper  memory  and  whether  or not transfers between floppy disk
  1465.         drives  and upper memory are redirected.  You may use the HIGHMEM
  1466.         program  to determine where the buffers have been placed in upper
  1467.         memory.  
  1468.  
  1469.         Microsoft  recommends setting the "BUFFERS=" option in CONFIG.SYS
  1470.         according  to  the  type  of  application  most  frequently used.
  1471.         Implicit  within  this  recommendation is the assumption that you
  1472.         won't  change  the  value  very  often  since it requires editing
  1473.         CONFIG.SYS and rebooting.  
  1474.  
  1475.         In  general, more buffers help when running programs that perform
  1476.         random  access on a relatively small number of disk records (such
  1477.         as  the  index  for a database program), or if your disk has many
  1478.         subdirectories organized on several levels.  
  1479.  
  1480.         Since  HIGHBFRS  allows you to increase or decrease the number of
  1481.         buffers  dynamically,  you  could create some batch files to tune
  1482.         the  number  of  buffers to fit the application you're running at
  1483.         the moment.  
  1484.  
  1485.  
  1486.         5.4 HIGHDISK.SYS         
  1487.  
  1488.         HIGHDISK.SYS  is  a  device  driver that implements a ram disk in
  1489.         upper  memory.   Bank-Switch  Memory  is  allocated first, and if
  1490.         that  isn't  enough, then High-DOS Memory is allocated to satisfy
  1491.         the  total request.  The device driver automatically loads itself
  1492.         into  upper memory without using HIGHDRVR or the DOS 5 DEVICEHIGH
  1493.         command, as in: 
  1494.  
  1495.                                DEVICE=HIGHDISK.SYS
  1496.  
  1497.  
  1498.  
  1499.  
  1500.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  1501.  
  1502.  
  1503.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              26
  1504.  
  1505.  
  1506.         This  creates  a  ram  disk that uses all available upper memory,
  1507.         with 32 directory entries and sectors of 128 bytes each.  
  1508.  
  1509.         A  command line option may be used to specify the size of the RAM
  1510.         disk as in: 
  1511.  
  1512.                              DEVICE=HIGHDISK.SYS 100
  1513.  
  1514.         This creates a 100k byte ram disk.  
  1515.  
  1516.         Other  command  line  options may be used to change the number of
  1517.         bytes per sector and directory entries, as in: 
  1518.  
  1519.                          DEVICE=HIGHDISK.SYS 100 256 64
  1520.  
  1521.         This  creates  a  100k  RAM disk with 256 bytes per sector and 64
  1522.         root directory entries.  
  1523.  
  1524.                 ╔═════════════════════════════════════════════════╗
  1525.                 ║ NOTE: If you have used the command DOS=UMB or   ║
  1526.                 ║ DOS=HIGH,UMB with HIGHUMM.SYS to let DOS 5.0    ║
  1527.                 ║ manage the Upper Memory Blocks, you must limit  ║
  1528.                 ║ how much upper memory HIGHUMM can use so that   ║
  1529.                 ║ some will be available for HIGHDISK.            ║
  1530.                 ╚═════════════════════════════════════════════════╝
  1531.  
  1532.  
  1533.         5.5 HIGHDRVR.SYS         
  1534.  
  1535.         HIGHDRVR  is  a  device  driver that is used to load other device
  1536.         drivers  into upper memory.  For a brief introduction to its use,
  1537.         see  the  section  titled  "Testing LASTBYTE.SYS HIGHDRVR.SYS and
  1538.         HIGHTSR.EXE"  in  the  "GETTING STARTED" chapter at the beginning
  1539.         of   this  manual.   Also  see  the  sections  in  the  "HINTS  /
  1540.         SUGGESTIONS   /  EXPLANATIONS"  chapter  near  the  end  of  this
  1541.         document on the /SIZE, /LOW, and /RESTRICT options.  
  1542.  
  1543.         The command line syntax of the CONFIG.SYS line for HIGHDRVR is: 
  1544.  
  1545.                 DEVICE=[path]HIGHDRVR.SYS <filespec> 
  1546.  
  1547.         where  '<filespec>'  is  the  filename of the device driver to be
  1548.         loaded  high,  optionally  prefixed  by  a  drive  and  directory
  1549.         specifcation.   The  filespec  may  be preceded by one or more of
  1550.         the  /SIZE,  /LOW, and /RESTRICT options, and followed by options
  1551.         at  the  end  of  the  command line as required by the particular
  1552.         driver to be loaded.  
  1553.  
  1554.         When  HIGHDRVR  searches  the disk for the device driver to load,
  1555.         it follows the following search strategy: 
  1556.  
  1557.  
  1558.  
  1559.  
  1560.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  1561.  
  1562.  
  1563.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              27
  1564.  
  1565.  
  1566.              (1)  If  '<filespec>'  includes  a  drive  or directory
  1567.                   specification,  this  will  be the only place that
  1568.                   HIGHDRVR will look.  
  1569.  
  1570.         Otherwise, HIGHDRVR will search for the driver in: 
  1571.  
  1572.              (2)  The current (root) directory, and then 
  1573.  
  1574.              (3)  The same directory where HIGHDRVR was found.  
  1575.  
  1576.  
  1577.         5.6 HIGHEMS3.SYS and HIGHEMS4.SYS       
  1578.  
  1579.         Two  expanded  memory  emulators  are provided with The Last Byte
  1580.         Memory  Manager.   Both  use  upper  memory  as  expanded memory.
  1581.         HIGHEMS3.SYS  is  compliant  with  the  older  LIM  3.2 spec, and
  1582.         HIGHEMS4.SYS  with  the  newer  LIM  4.0 spec.  Both are included
  1583.         since  the  HIGHEMS3.SYS requires much less memory for the device
  1584.         driver  itself  than HIGHEMS4.SYS.  In many applications, you may
  1585.         find that 3.2 is all you need.  
  1586.  
  1587.         These  device  drivers  emulate expanded memory!  That means that
  1588.         they  use  software  to  copy  data  back  and  forth between the
  1589.         logical  EMS  memory (pages) and the page frame.  Obviously, this
  1590.         is  much  slower  than  the  performance  you  would realize with
  1591.         hardware  support,  or  even  with  EMM386.SYS.  Therefore, these
  1592.         device  drivers  are provided as a last resort for those who have
  1593.         no  other way of providing EMS memory to their applications, such
  1594.         as users with only 1 meg of memory.  
  1595.  
  1596.         Both  HIGHEMS3.SYS and HIGHEMS4.SYS have an optional command line
  1597.         parameter  which  is the number of 16k EMS pages to allocate.  If
  1598.         omitted,  the  maximum  allocation  will  be  used.   Bank-Switch
  1599.         memory  is  allocated  first,  and  if  that  isn't  enough, then
  1600.         High-DOS Memory is allocated to satisfy the total page request.  
  1601.  
  1602.         Use  only  one  of  these  device  drivers,  and  load  it  after
  1603.         LASTBYTE.SYS.   The  driver automatically loads itself into upper
  1604.         memory  without  the  need  for  either  HIGHDRVR  or  the  DOS 5
  1605.         DEVICEHIGH  command.   Also  see  the  section  on  the /RESTRICT
  1606.         option  in  the "HINTS / SUGGESTIONS / EXPLANATIONS" chapter near
  1607.         the end of this document.  
  1608.  
  1609.                 ╔═════════════════════════════════════════════════╗
  1610.                 ║ NOTE: If you have used the command DOS=UMB or   ║
  1611.                 ║ DOS=HIGH,UMB with HIGHUMM.SYS to let DOS 5.0    ║
  1612.                 ║ manage the Upper Memory Blocks, you must limit  ║
  1613.                 ║ how much upper memory HIGHUMM can use so that   ║
  1614.                 ║ some will be available for HIGHEMS3/HIGHEMS4.   ║
  1615.                 ╚═════════════════════════════════════════════════╝
  1616.  
  1617.  
  1618.  
  1619.  
  1620.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  1621.  
  1622.  
  1623.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              28
  1624.  
  1625.  
  1626.  
  1627.         5.7 HIGHENV.EXE         
  1628.  
  1629.         HIGHENV  is  a  utility  that moves the master environment of the
  1630.         command  processor  (typically  COMMAND.COM)  out of conventional
  1631.         memory  and  into High-DOS memory.  It can also be used to change
  1632.         the size of the environment at any time.  
  1633.  
  1634.                 ╔═════════════════════════════════════════════════╗
  1635.                 ║ WARNING: HIGHENV is incompatible with Novell.   ║ 
  1636.                 ╚═════════════════════════════════════════════════╝
  1637.  
  1638.         If  used  without  a  command line option, HIGHENV simply reports
  1639.         the  location,  capacity,  and  length of the master environment.
  1640.         If  the  environment  has not been moved from low memory, it also
  1641.         examines  and  reports  potential  references  to the environment
  1642.         that  exist  within  the  command  processor.  If one or more are
  1643.         located, the first line(s) of output from HIGHENV will be: 
  1644.  
  1645.               "Potential command processor patch at location XXXX."
  1646.  
  1647.         where  "XXXX"  will  vary  from one command processor to another.
  1648.         HIGHENV  should  be used this way at least once to determine what
  1649.         "/PATCH" options (described below) may be required.  
  1650.  
  1651.         To  move  the  master environment into upper memory, you must use
  1652.         one  or  more  /PATCH  options  and  may use a /SIZE option.  The
  1653.         patch  options  specify  locations  in the command processor that
  1654.         must  be  modified.   (If  there  are no locations in the command
  1655.         processor  that  need  to  be  modified,  use  /PATCH=NONE.)  The
  1656.         /PATCH  option  may  only be specified once, when the environment
  1657.         is  moved  from  low  to  upper  memory.  The patch locations are
  1658.         recorded  in  upper  memory and are automatically adjusted if the
  1659.         environment  is repositioned within upper memory as the result of
  1660.         a subsequent use of HIGHENV to resize the environment.  
  1661.  
  1662.         The  size  option  is  simply  a  number that specifies the extra
  1663.         space   in   bytes  to  be  allocated  to  accomodate  additional
  1664.         environment  strings  besides  those already established.  If the
  1665.         size  option  is  omitted, the size of the environment block (and
  1666.         thus its capacity for growth) will not be changed.  
  1667.  
  1668.  
  1669.  
  1670.  
  1671.  
  1672.  
  1673.  
  1674.  
  1675.  
  1676.  
  1677.  
  1678.  
  1679.  
  1680.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  1681.  
  1682.  
  1683.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              29
  1684.  
  1685.  
  1686.                 ╔═════════════════════════════════════════════════╗
  1687.                 ║ WARNING: The SET command of COMMAND.COM norm-   ║ 
  1688.                 ║ ally warns you if you run out of space in the   ║ 
  1689.                 ║ master environment.  However, if you have used  ║ 
  1690.                 ║ HIGHENV to move it into upper memory, this      ║ 
  1691.                 ║ safegaurd no longer exists - you'll just write  ║ 
  1692.                 ║ over the next thing in upper memory!  Be sure   ║ 
  1693.                 ║ to check the HIGHENV report to be sure that you ║ 
  1694.                 ║ have enough extra space in the environment so   ║ 
  1695.                 ║ that this won't occur.                          ║ 
  1696.                 ╚═════════════════════════════════════════════════╝
  1697.  
  1698.         A  maximum  of four command processor locations to be patched may
  1699.         be specified in either of two ways: 
  1700.  
  1701.                 A>HIGHENV 256 /PATCH=1057 /PATCH=1536 
  1702.  
  1703.                 -or- 
  1704.  
  1705.                 A>HIGHENV 256 /PATCH=1057,1536 
  1706.  
  1707.         Each  of the patch numbers specify a location in the memory image
  1708.         of  the  command  processor;  these locations contain the segment
  1709.         address  of the master environment, and must be modified to point
  1710.         to  the  new master environment in upper memory.  Possible values
  1711.         to  be  used  are  restricted  to  those  locations reported when
  1712.         HIGHENV  is  run  with  no  command  line  options and before the
  1713.         environment has been moved into upper memory.  
  1714.  
  1715.         COMMAND.COM  usually  contains  only one such location that needs
  1716.         to  be  patched;  4DOS  contains  none (use /PATCH=NONE).  (Note:
  1717.         HIGHENV  always  patches  the  environment  address stored in the
  1718.         program  segment  prefix  of  the  command processor - this patch
  1719.         does not need to be specified.) 
  1720.  
  1721.                 ╔═════════════════════════════════════════════════╗
  1722.                 ║ NOTE: The /U option of 4DOS is an alternative   ║ 
  1723.                 ║ method for placing the master environment in    ║ 
  1724.                 ║ upper memory.  You don't need to use HIGHENV if ║ 
  1725.                 ║ you are already using the /U option of 4DOS.    ║ 
  1726.                 ╚═════════════════════════════════════════════════╝
  1727.  
  1728.         Once  moved into upper memory, the size of the environment may be
  1729.         changed  by  using  HIGHENV  with  simply  a  size  option.   For
  1730.         example,  to  shrink  the environment to only enough room for the
  1731.         current environment strings, use: 
  1732.  
  1733.                 A>HIGHENV 0 
  1734.  
  1735.         Or  to  change  the  growth  capacity  to  allow  for the current
  1736.         environment strings plus 100 bytes more, use: 
  1737.  
  1738.  
  1739.  
  1740.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  1741.  
  1742.  
  1743.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              30
  1744.  
  1745.  
  1746.  
  1747.                 A>HIGHENV 100 
  1748.  
  1749.  
  1750.         5.8 HIGHHOLE.EXE         
  1751.  
  1752.         HIGHHOLE  is  a utility program that finds unused space ("holes")
  1753.         in  ROMs.   A  "hole"  is  defined  as a sequence of at least 256
  1754.         bytes,  all  having  the  same  value, and usually corresponds to
  1755.         unused,  left-over  space  in  the  ROM.  If the ROM is shadowed,
  1756.         this  space  can  usually  be converted into free High-DOS memory
  1757.         using the "HOLE=" option of LASTBYTE.SYS.  
  1758.  
  1759.                 ┌─────────────────────────────────────────────────┐
  1760.                 │ NOTE: The HOLE option is not available in the   │
  1761.                 │ unlicensed version of LASTBYTE.SYS.             │
  1762.                 └─────────────────────────────────────────────────┘ 
  1763.  
  1764.         These  holes  are  often  less  than 1k in size, but sometimes as
  1765.         large  as  6k.   Since  The Last Byte Memory Manager uses a "best
  1766.         fit"  strategy  when  allocating  Hi-DOS memory, even the smaller
  1767.         holes  can  become  useful to hold the master environment created
  1768.         by  HIGHENV,  the  markers  of  HIGHMARK,  or with utilities like
  1769.         HIGHDISK  and  HIGHSPLR  that  can  distribute their memory among
  1770.         several  small pieces.  In addition, The Last Byte Memory Manager
  1771.         will  use  the  smallest  holes for memory control blocks (MCB's)
  1772.         that must be allocated for Bank-Switch memory needs.  
  1773.  
  1774.         HIGHHOLE   merely   locates  probable  holes,  and  suggests  the
  1775.         corresponding  option  to be used with LASTBYTE.SYS.  To activate
  1776.         these  holes,  you must then modify your configuration to include
  1777.         these  options.   No  option  will be suggested for a hole if (1)
  1778.         the  corresponding  ROM  area is not shadowed, (2) the hole is in
  1779.         the  Bios  Data Area (FE05-FFFF), or (3) the corresponding shadow
  1780.         ram is not controlled by The Last Byte Memory Manager.   
  1781.  
  1782.         NOTE:  Use of LASTBYTE.SYS's HOLE option will cause warm boots to
  1783.         be converted into cold boots.  
  1784.  
  1785.  
  1786.         5.9 HIGHINST.EXE         
  1787.  
  1788.         HIGHINST  is simply a TSR version of HIGHTSR that is designed for
  1789.         use  with  the  MS-DOS "INSTALL=" directive of a CONFIG.SYS file.
  1790.         MS-DOS  requires  that  the program named in an INSTALL directive
  1791.         to  be the name of a TSR, and anything else (e.g., HIGHTSR, which
  1792.         is  not  a  TSR)  will produce an error message.  A small part of
  1793.         HIGHINST   (96   bytes)  will  remain  resident  in  conventional
  1794.         memory.  
  1795.  
  1796.         For  a  full  description of command line options and syntax, see
  1797.  
  1798.  
  1799.  
  1800.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  1801.  
  1802.  
  1803.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              31
  1804.  
  1805.  
  1806.         the  description  for  HIGHTSR.   Also  see  the  sections on the
  1807.         /SIZE,  /LOW, and /RESTRICT options in the "HINTS / SUGGESTIONS /
  1808.         EXPLANATIONS" chapter near the end of this document.  
  1809.  
  1810.  
  1811.         5.10 HIGHKEY.EXE         
  1812.  
  1813.         HIGHKEY  is  a  advanced  command line editor that can recall and
  1814.         edit  previous  commands.   HIGHKEY  is  similar  to  the  DOSKEY
  1815.         program  in  DOS  5,  but with filename completion and the unique
  1816.         ability   to  store  the  command  line  history  in  bank-switch
  1817.         memory.   It  does not support DOSKEY macros, or the editing keys
  1818.         F7, F9, Alt+F7, or Alt+F10.  
  1819.  
  1820.         To install HIGHKEY, simply enter it as a command at the prompt: 
  1821.  
  1822.                 A>HIGHKEY 
  1823.  
  1824.         This  will  allocate  a recall buffer with a default size of 1024
  1825.         bytes,  but  which  can  be changed at any time with the use of a
  1826.         command line option.  
  1827.  
  1828.  
  1829.         5.10.1 Options         
  1830.  
  1831.         All of the keywords that follow may be abbreviated.  
  1832.  
  1833.         /BUFSIZE=n      Empties the recall buffer, and resizes it to 'n'
  1834.                         bytes.  If 'n' is replaced by the word "MAXIMUM",
  1835.                         the recall buffer size will use all available memory
  1836.                         up to 65535 bytes.
  1837.  
  1838.         /INSERT         Sets the default typing mode to insert.
  1839.  
  1840.         /OVERSTRIKE     Sets the default typing mode to overstike.
  1841.  
  1842.         /HISTORY        Displays the contents of the command line
  1843.                         recall buffer on the screen.
  1844.  
  1845.         filespec        A filename, optionally preceeded by a drive and
  1846.                         directory specification.  If used with the /HISTORY
  1847.                         option, causes the recall buffer to be written to
  1848.                         the specified file.  If used without the /HISTORY
  1849.                         option, it loads the recall buffer from the file.
  1850.  
  1851.  
  1852.         5.10.2 Editing Commands        
  1853.  
  1854.         Some  of  the  HIGHKEY  editing commands use what is known as the
  1855.         "template".   The  template  is  initialized  to  a  copy  of the
  1856.         previous  command line, but may be modified by one or more of the
  1857.  
  1858.  
  1859.  
  1860.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  1861.  
  1862.  
  1863.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              32
  1864.  
  1865.  
  1866.         editing commands.  
  1867.  
  1868.         Left Arrow              Moves the cursor back one character.
  1869.  
  1870.         Right Arrow             Moves the cursor forward one character.
  1871.  
  1872.         Up Arrow                Recalls the previous command and stores
  1873.                                 it in the template.
  1874.  
  1875.         Down Arrow              Recalls the next command and stores it
  1876.                                 in the template.
  1877.  
  1878.         PgUp                    Recalls the oldest command and stores it
  1879.                                 in the template.
  1880.  
  1881.         PgDn                    Recalls the most recent command and stores
  1882.                                 it in the template.
  1883.  
  1884.         Ctrl+Left Arrow         Moves the cursor back one word.
  1885.  
  1886.         Ctrl+Right Arrow        Moves the cursor forward one word.
  1887.  
  1888.         Home                    Moves the cursor to the beginning of
  1889.                                 the command line.
  1890.  
  1891.         End                     Moves the cursor to the end of the
  1892.                                 command line.
  1893.  
  1894.         Esc                     Erases the command line; does not affect
  1895.                                 the template.
  1896.  
  1897.         Ins                     Toggles insert versus overwrite mode.
  1898.  
  1899.         Backspace               Deletes the character to the left of the
  1900.                                 cursor; does not affect the template.
  1901.  
  1902.         Del                     Deletes the character at the cursor; does
  1903.                                 not affect the template.
  1904.  
  1905.         Ctrl+End                Deletes from the cursor to the end of
  1906.                                 the line; does not affect the template.
  1907.  
  1908.         Ctrl+Home               Deletes from the beginning of the line
  1909.                                 up to but not including the cursor; does
  1910.                                 not affect the template.
  1911.  
  1912.         F1                      Copies one character from the template.
  1913.  
  1914.         F2                      Waits for a keypress, then inserts charac-
  1915.                                 ters from the template up to but not in-
  1916.                                 cluding the first occurrence of that key.
  1917.  
  1918.  
  1919.  
  1920.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  1921.  
  1922.  
  1923.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              33
  1924.  
  1925.  
  1926.  
  1927.         F3                      Copies the remainder of the template to
  1928.                                 the command line.
  1929.  
  1930.         F4                      Waits for a keypress, then deletes charac-
  1931.                                 ters from the template up to but not in-
  1932.                                 cluding that key.  The template is then
  1933.                                 displayed on the command line.
  1934.  
  1935.         F5                      Copies the command line to the template
  1936.                                 and then erases the command line.
  1937.  
  1938.         F6                      Inserts an end-of-file character (Ctrl+Z).
  1939.  
  1940.         F8                      Searches for the next command that matches
  1941.                                 the characters in the command line up to
  1942.                                 the position of the cursor, then copies
  1943.                                 that command to the template.
  1944.  
  1945.         Tab                     Searches for a file on the disk whose name
  1946.                                 matches the partial filespec given by the
  1947.                                 text indicated by the cursor.  If found,
  1948.                                 the filespec is completed on the command
  1949.                                 line.
  1950.  
  1951.  
  1952.         5.11 HIGHMARK.EXE         
  1953.  
  1954.         Sometimes  it  can  be  useful  to  remove one or more TSR's from
  1955.         memory,  either  because  you  no longer want to use the features
  1956.         that  they  provide  or perhaps in order to make room for another
  1957.         set of TSR's.  
  1958.  
  1959.         In  order  to  be  able  to  remove  a  group of TSR's from upper
  1960.         memory,  they must be be marked.  To mark them, run HIGHMARK once
  1961.         before  you  use  HIGHTSR  to load the TSR's.  Then later, simply
  1962.         run  HIGHUNDO  - the mark and all of its associated TSR's will be
  1963.         removed.  
  1964.  
  1965.         HIGHMARK  may  be  executed  more than once to establish multiple
  1966.         levels  of  TSR's  to  be  removed.   Each  execution of HIGHMARK
  1967.         places  another  mark in memory with a unique mark number.  Every
  1968.         TSR  loaded  by HIGHTSR is automatically associated with the most
  1969.         recent  execution  of  HIGHMARK.   You can use HIGHMEM to see the
  1970.         marks,  their  mark  number, and the set of TSR's associated with
  1971.         the  mark.   Every execution of HIGHUNDO will then remove the set
  1972.         of TSR's associated with the most recent HIGHMARK.  
  1973.  
  1974.         You  may  specify  a  mark level on the command line of HIGHUNDO.
  1975.         This  will  cause it to remove all the TSR's and marks whose mark
  1976.         number  is  greater  than  or  equal to the number on the command
  1977.  
  1978.  
  1979.  
  1980.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  1981.  
  1982.  
  1983.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              34
  1984.  
  1985.  
  1986.         line.  
  1987.  
  1988.         IMPORTANT:  When  a  mark  is  removed  using HIGHUNDO, two basic
  1989.         things  happen: (1) the interrupt vector table is restored to its
  1990.         state  prior  to  the  corresponding HIGHMARK, and (2) any memory
  1991.         control  blocks  marked  with  the same mark number are released.
  1992.         If  you  have  installed  one  or  more  TSR's since the mark was
  1993.         established,  but  did so without the use of HIGHTSR, these TSR's
  1994.         will  be  disabled but they will not be removed from memory.  The
  1995.         following three examples indicate this consequence: 
  1996.  
  1997.                 Disabled and            Diabled but     Disabled but
  1998.                 removed                 remains         remains
  1999.                 --------                ------------    ------------
  2000.                 A>HIGHMARK              A>HIGHMARK      A>HIGHMARK
  2001.                 A>HIGHTSR CLOCK         A>CLOCK         A>LOADHIGH CLOCK
  2002.                 A>HIGHUNDO              A>HIGHUNDO      A>HIGHUNDO
  2003.  
  2004.  
  2005.         5.12 HIGHMEM.EXE         
  2006.  
  2007.         HIGHMEM  is  a  program that provides a display of what is loaded
  2008.         into  the upper memory area.  For a detailed description on using
  2009.         the  HIGHMEM  program,  see  the  section  titled  "Mapping Upper
  2010.         Memory  with  HIGHMEM"  in  the  "GETTING STARTED" chapter at the
  2011.         beginning of this manual.  
  2012.  
  2013.  
  2014.         5.13 HIGHSPLR.EXE         
  2015.  
  2016.         HIGHSPLR  is  a  interrupt-driven  print  spooler  that creates a
  2017.         print  buffer  in  upper  memory.   Once installed, programs that
  2018.         send  output to the printer are no longer held up waiting for the
  2019.         printer,  but  rather  simply  send  their  output to the buffer.
  2020.         Characters  in  the  buffer  are  then sent to the printer by the
  2021.         resident  portion  of  HIGHSPLR while your computer is free to do
  2022.         other work.  
  2023.  
  2024.         Unlike  the  MS-DOS  printer  spooler  (PRINT.COM),  HIGHSPLR  is
  2025.         driven  by  the  printer  hardware  interrupt  line  that signals
  2026.         printer   "ready",   rather   than  the  timer  tick  (that  only
  2027.         interrupts  18  times per second).  Unlike PRINT.COM, this allows
  2028.         full-speed  transfers  (e.g.,  up  to  about  8,000  cps)  to the
  2029.         printer even while executing other programs.  
  2030.  
  2031.         HIGHSPLR  tries  to  place  its buffer in Bank-Switch memory, but
  2032.         will  use  High-DOS  memory if a sufficient amount of Bank-Switch
  2033.         memory  is not available.  The size of the buffer will default to
  2034.         all  available  Bank-Switch  and  High-DOS  memory,  but  may  be
  2035.         restricted (or resized later) by a command line option.  
  2036.  
  2037.  
  2038.  
  2039.  
  2040.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  2041.  
  2042.  
  2043.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              35
  2044.  
  2045.  
  2046.         HIGHSPLR   supports   both  parallel  and  serial  printers,  but
  2047.         defaults  to  LPT1.  Multiple copies of HIGHSPLR can be installed
  2048.         to  support  more  than  one  printer.   HIGHSPLR  determines the
  2049.         physical  i/o  port  address  and  interrupt vector automatically
  2050.         from  the  device  name  (e.g.,  LPT2), but these defaults can be
  2051.         altered with command line options.  
  2052.  
  2053.         HIGHSPLR  also  has  a  unique "monitor" option.  While output is
  2054.         being  sent  to  the printer, you can monitor the actual transfer
  2055.         rate by entering the command, 
  2056.  
  2057.                 A>HIGHSPLR MONITOR 
  2058.  
  2059.         The  monitor  operation may be terminated at any time by pressing
  2060.         a  key, or will automatically terminate when the print buffer has
  2061.         been   emptied.   Once  terminated,  HIGHSPLR  will  display  the
  2062.         maximum  and  average  transfer rates measured during the monitor
  2063.         operation.  
  2064.  
  2065.         The  command  line  syntax  for  HIGHSPLR  is  given  below.  All
  2066.         parameters  are  optional and may be specified in any order.  All
  2067.         of  the options except LPTn, COMn, and IRQn may be abbreviated by
  2068.         their first letter.  
  2069.  
  2070.                 HIGHSPLR [opt] [opt] ... [opt]
  2071.  
  2072.                 where opt may be selected from:
  2073.  
  2074.                 KBYTES=n        LPTn or COMn            PORT=n
  2075.                 IRQn            MONITOR                 RESET
  2076.  
  2077.                 or FLOW=<type>, where <type> may be selected from:
  2078.  
  2079.                 XON     DTR     RTS     NONE (default)
  2080.  
  2081.         Normally,  neither  the  "PORT"  or  "IRQn" options are necessary
  2082.         since  they  are  automatically derived from the "COMn" or "LPTn"
  2083.         option.   The  "RESET"  option  provides a way to cancel printing
  2084.         from  the  buffer  at  any time.  One of the FLOW control options
  2085.         (XON,  DTR, RTS) may be required with some serial (COMn) printers
  2086.         to provide flow control.  
  2087.  
  2088.  
  2089.         5.14 HIGHTSR.EXE         
  2090.  
  2091.         HIGHTSR  is  a  program  that  is  used to load TSR programs into
  2092.         upper  memory.   For  a  brief  introduction  to its use, see the
  2093.         section    titled    "Testing   LASTBYTE.SYS   HIGHDRVR.SYS   and
  2094.         HIGHTSR.EXE"  in  the  "GETTING STARTED" chapter at the beginning
  2095.         of  this  manual.   In  addition  to  the /NOENV option described
  2096.         below,  also  see  the sections on the /SIZE, /LOW, and /RESTRICT
  2097.  
  2098.  
  2099.  
  2100.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  2101.  
  2102.  
  2103.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              36
  2104.  
  2105.  
  2106.         options  in the "HINTS / SUGGESTIONS / EXPLANATIONS" chapter near
  2107.         the end of this document.  
  2108.  
  2109.         The command line syntax for HIGHTSR is: 
  2110.  
  2111.                 [path]HIGHTSR <filespec> 
  2112.  
  2113.         where  '<filespec>'  is  the  filename  of  the TSR program to be
  2114.         loaded  high,  optionally  prefixed  by  a  drive  and  directory
  2115.         specifcation.   The  filespec  may  be preceded by one or more of
  2116.         the  /SIZE,  /LOW, /NOENV, and /RESTRICT options, and followed by
  2117.         options  at  the  end  of  the  command  line  as required by the
  2118.         particular TSR to be loaded.  
  2119.  
  2120.         When  HIGHTSR searches the disk for the device driver to load, it
  2121.         follows   the   same  strategy  that  MS-DOS  uses  when  loading
  2122.         programs: 
  2123.  
  2124.              (1)  If  '<filespec>'  includes  a  drive  or directory
  2125.                   specification,  this  will  be the only place that
  2126.                   HIGHTSR will look.  
  2127.  
  2128.         Otherwise, HIGHTSR will search for the TSR program in: 
  2129.  
  2130.              (2)  The current directory, and then 
  2131.  
  2132.              (3)  Those  directories  given  by the PATH environment
  2133.                   variable.  
  2134.  
  2135.  
  2136.         5.14.1 The /NOENV Option       
  2137.  
  2138.         All  programs,  including  TSR's,  are  allocated  two regions of
  2139.         memory  when  they  are  loaded:  One is the area for the program
  2140.         itself,  and  the  other  is for a copy of the environment.  Most
  2141.         TSR's  don't  make  use  of  their environment, and some actually
  2142.         release it to the operating system rather than hanging onto it.  
  2143.  
  2144.         If  HIGHMEM  finds  an environment block, the corresponding entry
  2145.         in  the  "Description"  column will have the name of the TSR that
  2146.         it  belongs  to  (such as "CLOCK.EXE") followed by the indication
  2147.         "[Env]".    Occassionally,  you  may  see  a  similar  indication
  2148.         "[Dat]";  this  is  a  data block explicitly allocated by the TSR
  2149.         for some unknown purpose.  
  2150.  
  2151.                         TSRs that eliminate their PSP   
  2152.  
  2153.              The  authors  of  some  TSR's  attempt to save a little
  2154.              extra  memory  by  having  the  TSR  eliminate  its own
  2155.              Program  Segment  Prefix  (PSP)  during initialization.
  2156.              Doing  so  makes  it  impossible  to identify the TSR's
  2157.  
  2158.  
  2159.  
  2160.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  2161.  
  2162.  
  2163.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              37
  2164.  
  2165.  
  2166.              environment    block.     However,   this   byte-saving
  2167.              mentality    will   usually   mean   that   the   TSR's
  2168.              initialization  code  also  eliminates  its environment
  2169.              block, so this is rarely a problem.  
  2170.  
  2171.  
  2172.         If  you  see  a  block labelled "[Env]" in the output of HIGHMEM,
  2173.         then  you  can  use  the /NOENV command line option of HIGHTSR to
  2174.         release this block, even if the TSR didn't: 
  2175.  
  2176.                 HIGHTSR /NOENV CLOCK 
  2177.  
  2178.         As  noted  earlier,  some  TSRs  will  release  their environment
  2179.         anyway  and  so you may be tempted to load them without using the
  2180.         /NOENV  option.   This  usually  will  create  a  "hole" in upper
  2181.         memory  since  the  TSR's  environment is almost always allocated
  2182.         just  below  the TSR itself.  Use of the /NOENV option forces the
  2183.         environment  to  be  allocated down in conventional memory (where
  2184.         it will be reclaimed later) so that the "hole" is eliminated.  
  2185.  
  2186.  
  2187.         5.15 HIGHUMM.SYS         
  2188.  
  2189.         HIGHUMM  is  a  device  driver that creates, and lets application
  2190.         software  use,  Upper  Memory  Blocks (UMB's) in the upper memory
  2191.         area  via  a  standard  protocol that is part of what is known as
  2192.         the  Extended  Memory Specification (XMS).  The number, size, and
  2193.         location  of  UMB  blocks vary widely depending upon the types of
  2194.         hardware adapter cards resident within the upper address space.  
  2195.  
  2196.                 ╔═════════════════════════════════════════════════╗
  2197.                 ║ WARNING: HIGHUMM is NOT compatible with the     ║ 
  2198.                 ║ simultaneous use of EMM386.SYS.  Everything     ║ 
  2199.                 ║ will work fine until you try to reboot, and     ║ 
  2200.                 ║ then the system will "hang".  The DOS 5 version ║ 
  2201.                 ║ of EMM386.SYS is capable of providing UMB       ║ 
  2202.                 ║ support, and thus HIGHUMM.SYS is not needed.    ║ 
  2203.                 ╚═════════════════════════════════════════════════╝
  2204.  
  2205.         HIGHUMM may be installed in one of two ways: 
  2206.  
  2207.              o  If  an  XMS  driver  (such as HIMEM.SYS) has already
  2208.                 been  loaded,  HIGHUMM  will link into it, providing
  2209.                 an  implementation  of  the  two  XMS  functions for
  2210.                 accessing  what  the  XMS specification refers to as
  2211.                 "Upper  Memory  Blocks" (UMB's).  Although described
  2212.                 in  the  XMS  specification,  the UMB functions have
  2213.                 not  been  implemented  in any version of HIMEM.SYS.
  2214.                 For example, 
  2215.  
  2216.                         DEVICE=LASTBYTE.SYS {and any options}
  2217.  
  2218.  
  2219.  
  2220.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  2221.  
  2222.  
  2223.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              38
  2224.  
  2225.  
  2226.                         DEVICE=HIGHDRVR.SYS C:\DOS\HIMEM.SYS {and any options}
  2227.                         DEVICE=HIGHUMM.SYS
  2228.  
  2229.              o  If  an  XMS driver has not been loaded, then HIGHUMM
  2230.                 will  become a UMB-Only XMS device driver, providing
  2231.                 support  for XMS functions 00h (Get Version Number),
  2232.                 10h   (Allocate  UMB  Block),  11h  (Deallocate  UMB
  2233.                 Block).    All   other  XMS  functions  will  return
  2234.                 failure,   indicating   that  the  function  is  not
  2235.                 implemented.  For example, 
  2236.  
  2237.                         DEVICE=LASTBYTE.SYS {and any LASTBYTE options}
  2238.                         DEVICE=HIGHUMM.SYS
  2239.  
  2240.                                 Important!       
  2241.  
  2242.                 If  another  XMS  device driver is used (e.g., to
  2243.                 provide  management  of  extended  memory  or the
  2244.                 upper  memory  area),  it  must  be loaded before
  2245.                 HIGHUMM.SYS.  
  2246.  
  2247.  
  2248.         If  you  want  to limit how much upper memory can be allocated by
  2249.         HIGHUMM  as UMB's, you can specify this in kbytes as an option on
  2250.         the HIGHUMM.SYS command line, as in: 
  2251.  
  2252.                 DEVICE=HIGHUMM.SYS 60 
  2253.  
  2254.         This  provides  a guarantee that some amount of upper memory will
  2255.         never  be  allocated  by  HIGHUMM.SYS,  and  will  thus  still be
  2256.         available for other uses.  
  2257.  
  2258.         HIGHUMM  requires  that  LASTBYTE.SYS  be  installed  first.   It
  2259.         automatically  loads  itself  into  upper  memory  without  using
  2260.         either  HIGHDRVR  or  the DOS 5 DEVICEHIGH command.  Also see the
  2261.         section  on  the  /RESTRICT  option in the "HINTS / SUGGESTIONS /
  2262.         EXPLANATIONS" chapter near the end of this document.  
  2263.  
  2264.  
  2265.         5.16 HIGHUNDO.EXE         
  2266.  
  2267.         For  a complete discussion of HIGHUNDO see the description of its
  2268.         companion program, HIGHMARK in an earlier section.  
  2269.  
  2270.  
  2271.  
  2272.  
  2273.  
  2274.  
  2275.  
  2276.  
  2277.  
  2278.  
  2279.  
  2280.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  2281.  
  2282.  
  2283.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              39
  2284.  
  2285.  
  2286.                CHAPTER 6 - HINTS / SUGGESTIONS / EXPLANATIONS    
  2287.  
  2288.  
  2289.         The  following  article  provides  an excellent definition of the
  2290.         various   kinds   of  memory,  such  as  conventional,  extended,
  2291.         expanded,  high,  and  upper.   More  important,  however, is its
  2292.         discussion  of  how  various  adapter cards make use of the upper
  2293.         address  space,  and  may  provide  some insight if you're having
  2294.         problems   getting  The  Last  Byte  Memory  Manager  to  install
  2295.         properly: 
  2296.  
  2297.              Barry  Simon,  "How  to Get the Most from Your System's
  2298.              High  DOS Memory", PC Magazine, Vol. 9, No. 10 (May 29,
  2299.              1990), pp. 347-358.  
  2300.  
  2301.  
  2302.         6.1 The /SIZE Option       
  2303.  
  2304.         This option can be used with HIGHDRVR, HIGHINST, and HIGHTSR.  
  2305.  
  2306.         The  amount  of  High-DOS memory required to load a device driver
  2307.         or  TSR  (hereafter  called the "load requirement") is the larger
  2308.         of  two  amounts:  (1)  the amount required during initialization
  2309.         (greater  than  or  equal  to  the  size of the file) and (2) the
  2310.         amount required when finally resident.  
  2311.  
  2312.         Although  the  final  resident  requirement  of  any  high-loaded
  2313.         software  may  be obtained from the HIGHMEM output, remember that
  2314.         the  initialization  (and  thus  the  load)  requirement  may  be
  2315.         greater than either the file size or the HIGHMEM listing! 
  2316.  
  2317.         Most   device   drivers   and   TSR's  require  more  memory  for
  2318.         initialization  than  when  resident,  although  there  are a few
  2319.         (such   as   SMARTDRV.SYS  and  NANSI.SYS)  which  require  extra
  2320.         resident  memory  for buffers, etc.  Thus the normal operation of
  2321.         HIGHDRVR,  HIGHTSR,  and  HIGHINST  is  to  use  the largest free
  2322.         High-DOS  memory  block  to  load the software since the resident
  2323.         memory  requirement cannot be determined until after the software
  2324.         has been loaded and initialized.  
  2325.  
  2326.         Unfortunately,  this  can  lead  to  a  less  than optimum use of
  2327.         memory.   If  the  memory  requirements were known, then a memory
  2328.         block  could  be  selected using a "best fit" strategy; i.e., the
  2329.         smallest  free  High-DOS  memory  block  which  is larger than or
  2330.         equal  to  the  load  requirement.   This usually results in much
  2331.         better utilization of memory.  
  2332.  
  2333.         HIGHDRVR,  HIGHTSR, and HIGHINST have a special option /SIZE that
  2334.         can be used to report the load requirement: 
  2335.  
  2336.                 DEVICE=HIGHDRVR.SYS /SIZE SMARTDRV.SYS 2048 512
  2337.  
  2338.  
  2339.  
  2340.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  2341.  
  2342.  
  2343.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              40
  2344.  
  2345.  
  2346.         or:     INSTALL=HIGHINST.EXE /SIZE SHARE.EXE
  2347.         or:     HIGHTSR /SIZE PRINT.COM /D:PRN
  2348.  
  2349.         The  load requirement will then be displayed on the console after
  2350.         the  software  has been loaded and initialized.  This information
  2351.         can  then be used to specify the value (expressed in bytes) to be
  2352.         used  with  the  /SIZE  option  to force a "best fit" allocation.
  2353.         For example: 
  2354.  
  2355.                 DEVICE=HIGHDRVR.SYS /SIZE:16240 SMARTDRV.SYS 2048 512
  2356.         or:     INSTALL=HIGHINST.EXE /SIZE:13616 SHARE.EXE
  2357.         or:     HIGHTSR /SIZE:17120 PRINT.COM /D:PRN
  2358.  
  2359.  
  2360.         6.2 The /LOW Option       
  2361.  
  2362.         This option can be used with HIGHDRVR, HIGHINST, and HIGHTSR.  
  2363.  
  2364.         As  noted  earlier,  TSR's  and device drivers often require much
  2365.         more  memory  during  installation  as  compared to that required
  2366.         once  they  are  resident.   This  can  prevent loading them into
  2367.         High-DOS  memory  even  if  there's enough for the resident image
  2368.         (but not enough for initialization).  
  2369.  
  2370.         HIGHTSR,  HIGHINST,  and  HIGHDRVR  provide an option "/LOW" that
  2371.         can  be  used  with  some  TSR's and device drivers to get around
  2372.         this problem: 
  2373.  
  2374.                 HIGHTSR /LOW APPEND 
  2375.  
  2376.                 -or- 
  2377.  
  2378.                 DEVICE=HIGHDRVR.SYS /LOW MYDRIVER.SYS 
  2379.  
  2380.         For  example,  the  first  example above loads a TSR (APPEND.EXE)
  2381.         and  initializes  it  in  low (conventional) memory where there's
  2382.         lots  of  room,  then copies the (smaller) resident image up into
  2383.         upper memory.  
  2384.  
  2385.                 ╔═════════════════════════════════════════════════╗
  2386.                 ║ WARNING: The design of some software may pre-   ║ 
  2387.                 ║ vent the /LOW option from working properly.     ║ 
  2388.                 ║ Don't use it unless necessary, and then only    ║ 
  2389.                 ║ after you have tested it to be sure everything  ║ 
  2390.                 ║ works as expected.  (For example, it will NOT   ║ 
  2391.                 ║ work with PRINT.COM, SHARE.EXE, FASTOPEN.EXE,   ║ 
  2392.                 ║ MODE.COM, or HyperDisk.)                        ║ 
  2393.                 ╚═════════════════════════════════════════════════╝
  2394.  
  2395.  
  2396.  
  2397.  
  2398.  
  2399.  
  2400.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  2401.  
  2402.  
  2403.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              41
  2404.  
  2405.  
  2406.         6.3 The /RESTRICT Option       
  2407.  
  2408.         This  option  can  be  used  with  HIGHDRVR,  HIGHINST,  HIGHTSR,
  2409.         HIGHUMM,  HIGHEMS3,  and HIGHEMS4.  When used, it restricts which
  2410.         128k  regions of upper memory may be allocated for use with these
  2411.         utilities.   For  a  detailed discussion of why these regions may
  2412.         need  to  be  restricted and how to control the restrictions, see
  2413.         the   discussion   of   the   RESTRICT  option  in  the  detailed
  2414.         description of LASTBYTE.SYS.  
  2415.  
  2416.  
  2417.         6.4 Specifying Command Line Options with Indirect Files   
  2418.  
  2419.         Some  of the device drivers and utility programs in The Last Byte
  2420.         Memory  Manager  package  may  require  lots  of  options  to  be
  2421.         specified.   To  avoid  lengthly command lines, these options can
  2422.         be  placed  in  a text file if the name of that file is specified
  2423.         on  the command line preceded by the '@' character.  For example,
  2424.         you'd  probably  run  out of room if all of the following options
  2425.         were required on the LASTBYTE.SYS command line: 
  2426.  
  2427.                    APPEND=64 DOS=B000:32 DOS=F000:32 ? 82C302
  2428.  
  2429.         As  an  alternative,  create  a  corresponding  text  file called
  2430.         LASTBYTE.CFG (for example), and put the options into it: 
  2431.  
  2432.                 A000:64 
  2433.                 DOS=B000:32 DOS=F000:32 
  2434.                 ? 82C302 
  2435.  
  2436.         (Carriage returns in the indirect file are treated as blanks) 
  2437.  
  2438.         Then the CONFIG.SYS command line becomes simply: 
  2439.  
  2440.                 DEVICE=LASTBYTE.SYS @LASTBYTE.CFG 
  2441.  
  2442.         In  effect,  options  taken  from  the indirect file are inserted
  2443.         into  the  command  line,  so  that  one  or  more  indirect file
  2444.         references  may  be  placed  among  other  options on the command
  2445.         line: 
  2446.  
  2447.                 DEVICE=LASTBYTE.SYS ? @TLB.1 A=A000:32 @C:\TLB\TLB.2 
  2448.  
  2449.         Indirect  files  may  be  used  on the command line of any device
  2450.         driver  (.SYS  files) or utility program (.EXE files) in The Last
  2451.         Byte Memory Manager package.  
  2452.  
  2453.  
  2454.  
  2455.  
  2456.  
  2457.  
  2458.  
  2459.  
  2460.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  2461.  
  2462.  
  2463.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              42
  2464.  
  2465.  
  2466.         6.5 Using the DOS=F000:32 Option      
  2467.  
  2468.         The  64k  region  starting  at paragraph address F000 is the Bios
  2469.         ROM.   Many  computers  use  a  Bios  ROM  developed  by  AMI  or
  2470.         Phoenix.   The  more  recent  versions  of  these ROMs devote the
  2471.         first  32k  to  initialization  code that is only used during the
  2472.         boot  sequence, and use the second 32k for that portion that must
  2473.         remain  available  at  all  times.  (This seems to be true of the
  2474.         Award Bios as well, but has not been verified.) 
  2475.  
  2476.         By  the time your computer gets to the point in its boot sequence
  2477.         where  it  is  installing  the  device  drivers (e.g., when it is
  2478.         installing  LASTBYTE.SYS),  the  Bios  initialization  code is no
  2479.         longer  needed.   If  you  have  one of these AMI or Phoenix Bios
  2480.         chips,  you  can  capture  another 32k of upper memory by using a
  2481.         DOS=F000:32 option on the LASTBYTE.SYS command line.  
  2482.  
  2483.         Of  course,  whenever  you  press Ctrl-Alt-Del to do a warm boot,
  2484.         the  ROM  Bios  initialization  code  needs to be executed again!
  2485.         And  that could be a problem since you've effectively disabled it
  2486.         with   the   DOS=F000:32   option!    Fortunately,   LASTBYTE.SYS
  2487.         intercepts   all   keyboard  input  and  keeps  an  eye  out  for
  2488.         Ctrl-Alt-Del.   When it sees the warm boot request, it will force
  2489.         a  cold  boot  if  you've  used  the  DOS=F000:32  option.   This
  2490.         re-enables  the  entire  64k  Bios ROM so that the initialization
  2491.         code  is  reactivated  before  the processor tries to execute it.
  2492.         Otherwise a normal warm boot is used.  
  2493.  
  2494.                 ╔═════════════════════════════════════════════════╗
  2495.                 ║ WARNING: Some TSRs intercept keyboard interrupt ║ 
  2496.                 ║ 9, and jump directly into a fixed location in   ║ 
  2497.                 ║ the Bios ROM where the Warm Boot code begins.   ║ 
  2498.                 ║ Unfortunately, this will bypass LASTBYTE.SYS's  ║ 
  2499.                 ║ attempt to turn the ROM back on.                ║ 
  2500.                 ╚═════════════════════════════════════════════════╝
  2501.  
  2502.  
  2503.         6.6 Video Display RAM above 640k     
  2504.  
  2505.         In  general,  the  region A0000-BFFFF is the video display buffer
  2506.         area.   Various  display  adapters  (MDA, Hercules, CGA, EGA, and
  2507.         VGA)  typically  use only a small subset of this space.  The Last
  2508.         Byte  Memory  Manager  automatically  senses  what  kind of video
  2509.         display adapter is installed and reserves the space it uses.  
  2510.  
  2511.         The  MDA  (monochrome)  adapter  implements  a  4k text buffer at
  2512.         B0000-B0FFF,  and  the  CGA (color) adapter implements a 16k text
  2513.         and  graphics  buffer  at B8000-BBFFF.  The Hercules adapter uses
  2514.         the  entire 64k region at B0000-BFFFF in graphics modes, although
  2515.         only  the  first  4k of this space (B0000-B0FFF) is used for text
  2516.         modes.  
  2517.  
  2518.  
  2519.  
  2520.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  2521.  
  2522.  
  2523.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              43
  2524.  
  2525.  
  2526.  
  2527.         The  EGA  and  VGA adapters have a 64k graphics display buffer at
  2528.         A0000-AFFFF,  and a 32k text display buffer at either B0000-B7FFF
  2529.         (when  used  with  a monochrome display), or at B8000-BFFFF (when
  2530.         used with a color display).  
  2531.  
  2532.         The  following  chart summarizes these regions as well as some of
  2533.         the  DOS  and  APPEND  optons  you  may  be  able  to  use on the
  2534.         LASTBYTE.SYS  command  line  with these adapters.  Unfortunately,
  2535.         the  ROM  bios  on  a  (very)  few  PC's may write into locations
  2536.         outside  the  area reserved for a particular type of display.  If
  2537.         you  decide  this  is  happening, you may need to add one or more
  2538.         EXCLUDE  options to the LASTBYTE.SYS command line to disable that
  2539.         region.  
  2540.  
  2541.              LASTBYTE.SYS Command Line Options for Display Adapters
  2542.  
  2543.              Adapter         Reserved        DOS         APPEND
  2544.              -------         --------        -------     -------
  2545.              CGA             B800:16                     96
  2546.              MDA             B000:4                      64
  2547.              Hercules        B000:64         B400:48     64
  2548.  
  2549.              EGA/VGA         A000:64         BC00:16     96
  2550.              w/Color         B800:32 
  2551.              Display
  2552.  
  2553.              EGA/VGA         A000:64         B400:16     64
  2554.              w/Mono          B000:32
  2555.              Display
  2556.  
  2557.              VGA Bios        C000:32         C600:8 (see next section)
  2558.  
  2559.                   Note: Windows 3.0 may write in the region B000-BFFF.
  2560.  
  2561.         The  ability  to  use  the  DOS and APPEND options depends on the
  2562.         availability  of other memory in the indicated area.  For further
  2563.         information, consult the appendix on "CHIPSET LIMITATIONS".  
  2564.  
  2565.  
  2566.         6.7 Video Adapter Bios ROMs      
  2567.  
  2568.         MDA  and CGA use the standard ROM Bios; they have no ROM of their
  2569.         own.   EGA  and  VGA adapters, however, incorporate their own ROM
  2570.         Bios  chip  right on the adapter card.  LASTBYTE.SYS successfully
  2571.         recognizes these ROMs, but has to treat VGA in a special manner: 
  2572.  
  2573.         The  VGA  adapter  made  by  IBM  has  a  24k  ROM  installed  at
  2574.         C0000-C5FFF,  which  means  that  the 8k at C6000-C7FFF should be
  2575.         usable.   Although  almost  all  VGA  clones have a ROM signature
  2576.         that  indicates  24k,  many of them use the C6000-C7FFF space for
  2577.  
  2578.  
  2579.  
  2580.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  2581.  
  2582.  
  2583.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              44
  2584.  
  2585.  
  2586.         ROM  Bios  or  RAM  extensions  that  provide  their  "Super VGA"
  2587.         features.    In   particular,   the  Video7  and  Paradise  VGA's
  2588.         incorporate  their  own  RAM from C6000-C7FFF.  (This may also be
  2589.         true  of  other  VGA boards that uses a VLSI chip manufactured by
  2590.         Chips   and  Technologies,  Tseng  Labs,  Paradise,  or  Headland
  2591.         Technologies.)    For   this   reason,  when  LASTBYTE.SYS  finds
  2592.         anybody's  VGA  adapter, it automatically assumes that there is a
  2593.         32k ROM at C0000-C7FFF.  
  2594.  
  2595.  
  2596.         6.8 LASTBYTE.SYS and Expanded Memory      
  2597.  
  2598.         Expanded  memory always has an associated device driver.  If that
  2599.         driver  is loaded before LASTBYTE.SYS in the CONFIG.SYS file (and
  2600.         if  the  hardware is enabled) LASTBYTE.SYS will recognize the 64k
  2601.         EMM  page frame of the expanded memory and do the right thing: It
  2602.         will  treat the page frame like any other adapter ram and disable
  2603.         the  motherboard RAM that falls in the same address space so that
  2604.         it  doesn't  interfere  with the page frame.  For example, if the
  2605.         EMM  driver is loaded first, LASTBYTE.SYS will report the 64k EMM
  2606.         page frame as "EMS Page Frame".  
  2607.  
  2608.         This  works  fine,  of  course,  but loading the EMM driver first
  2609.         precludes  the  possibility  of loading it into upper memory.  To
  2610.         get  the  EMM  driver  into  upper  memory  means that it must be
  2611.         loaded after LASTBYTE.SYS, but you must be careful! 
  2612.  
  2613.         If   LASTBYTE.SYS  is  loaded  first,  the  page  frame  will  be
  2614.         recognized only in two cases: 
  2615.  
  2616.              o  The   page   frame   used  by  the  expanded  memory
  2617.                 controller  built  into some memory controller chips
  2618.                 will   be  recognized  and  reported  as  "EMS  Page
  2619.                 Frame".  
  2620.  
  2621.              o  The  page  frame  of a REAL expanded memory board is
  2622.                 (if  enabled)  recognized  and  reported as "Adapter
  2623.                 RAM".  
  2624.  
  2625.         In either case, LASTBYTE.SYS will not use that memory space.  
  2626.  
  2627.                 ╔═════════════════════════════════════════════════╗
  2628.                 ║ WARNING: Some EMS boards must be enabled by     ║ 
  2629.                 ║ their device driver before they respond as      ║ 
  2630.                 ║ read/write memory.  This prevents LASTBYTE.SYS  ║ 
  2631.                 ║ from recognizing them, and you may need a       ║ 
  2632.                 ║ BANKSWITCH option to keep LASTBYTE.SYS from     ║ 
  2633.                 ║ using the page frame memory space.              ║ 
  2634.                 ╚═════════════════════════════════════════════════╝
  2635.  
  2636.         If  you  don't  have  an  expanded  memory board, but have used a
  2637.  
  2638.  
  2639.  
  2640.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  2641.  
  2642.  
  2643.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              45
  2644.  
  2645.  
  2646.         device  driver  (like  EMM386.SYS)  that EMULATES expanded memory
  2647.         using  extended memory, then LASTBYTE.SYS will not know about the
  2648.         page  frame unless the emulator is loaded first.  If LASTBYTE.SYS
  2649.         is   loaded   first,   then   you  must  use  a  "EXCLUDE="  (not
  2650.         "BANKSWITCH="!)  command line option of LASTBYTE.SYS to reserve a
  2651.         64k  region  where  the  emulated  page frame can be placed.  For
  2652.         EMM386.SYS,  the  page  frame  must  be positioned at C000, C400,
  2653.         C800, CC00, D000, D400, D800, DC00, or E000.  
  2654.  
  2655.  
  2656.         6.9 Fine-Tuning your Adapter Hardware Configuration     
  2657.  
  2658.         Many  adapter  cards  occupy  some  portion  of the upper address
  2659.         space.   Some  of  these  cards,  such  as SCSI Disk Controllers,
  2660.         often  have  DIP  switches or jumpers that can be used to set the
  2661.         address space they occupy to one of a few alternatives.  
  2662.  
  2663.         If  the memory map displayed by HIGHMEM is fragmented because one
  2664.         of  these adapters sits between two "....DOS Free" areas, you may
  2665.         want  to  try  to  reposition  the address space occupied by that
  2666.         adapter  by  modifying  the  DIP switch or jumper settings on the
  2667.         card.  
  2668.  
  2669.         Having  one  large  free  memory block is better than two smaller
  2670.         ones  because TSR's and device drivers almost always require more
  2671.         memory  during  initialization  than  once  installed.   In other
  2672.         words,  neither of the two smaller blocks may be large enough for
  2673.         the installation, but might if they were combined.  
  2674.  
  2675.  
  2676.  
  2677.  
  2678.  
  2679.  
  2680.  
  2681.  
  2682.  
  2683.  
  2684.  
  2685.  
  2686.  
  2687.  
  2688.  
  2689.  
  2690.  
  2691.  
  2692.  
  2693.  
  2694.  
  2695.  
  2696.  
  2697.  
  2698.  
  2699.  
  2700.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  2701.  
  2702.  
  2703.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              46
  2704.  
  2705.  
  2706.                     CHAPTER 7 - USE WITH OTHER SOFTWARE     
  2707.  
  2708.  
  2709.         7.1 Microsoft's FASTOPEN and MODE programs     
  2710.  
  2711.         The  FASTOPEN  and  MODE programs that come with MS-DOS are TSR's
  2712.         and  as  such may be loaded into upper memory with either HIGHTSR
  2713.         or  HIGHINST.   Once installed, each requires very little memory,
  2714.         something  on  the  order  of 10k or less.  However, neither will
  2715.         install  unless  a  lot  of  memory  is available - approximately
  2716.         50-90k.   (The  actual requirement depends partly on command line
  2717.         options;  you  can  determine  the  requirement  using  the /SIZE
  2718.         option of HIGHTSR or HIGHINST.) 
  2719.  
  2720.                 ╔═════════════════════════════════════════════════╗
  2721.                 ║ WARNING: Do NOT use the /LOW option of HIGHTSR  ║ 
  2722.                 ║ or HIGHINST with FASTOPEN or MODE - it won't    ║ 
  2723.                 ║ work and could damage data on your disk!        ║ 
  2724.                 ╚═════════════════════════════════════════════════╝
  2725.  
  2726.         The  worst  part  is  that  if  FASTOPEN  fails to install itself
  2727.         successfully,  it  doesn't  issue  any  error message - it simply
  2728.         doesn't   display   the   normal   "FASTOPEN  installed"  sign-on
  2729.         message.   Moral:  Let  FASTOPEN and MODE be the first TSR's that
  2730.         are  installed into High Memory in your AUTOEXEC.BAT file so that
  2731.         they get access to the maximum amount of memory.  
  2732.  
  2733.         The  second  hassle  with  these two TSR's is that they cannot be
  2734.         removed  by  using  HIGHMARK and HIGHUNDO.  Evidently they modify
  2735.         memory  other than that tracked by HIGHMARK (the interrupt vector
  2736.         table and that memory allocated to them).  
  2737.  
  2738.  
  2739.         7.2 Microsoft's SHARE program       
  2740.  
  2741.         MS-DOS  4  installs the SHARE program automatically if you have a
  2742.         hard  disk which is greater than 32 MB in a single partition.  It
  2743.         does  this  without  asking  because  it is otherwise possible to
  2744.         corrupt  the  data on the disk when running programs that use the
  2745.         old File Control Block (FCB) approach to access files.  
  2746.  
  2747.         Unfortunately,  some  internal parts of MS-DOS 4.0 also still use
  2748.         FCB's!   So  don't  try  to  prevent  SHARE  from being loaded by
  2749.         removing  it  from  your system!  If MS-DOS can't find it, you'll
  2750.         get  a  warning message during the boot saying that "SHARE should
  2751.         be   loaded   for   large  media".   You  could  load  it  during
  2752.         AUTOEXEC.BAT   processing,  but  you'll  still  get  the  warning
  2753.         because the check occurs during CONFIG.SYS processing.  
  2754.  
  2755.  
  2756.  
  2757.  
  2758.  
  2759.  
  2760.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  2761.  
  2762.  
  2763.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              47
  2764.  
  2765.  
  2766.                 ╔═════════════════════════════════════════════════╗
  2767.                 ║ NOTE: Version 5 of MS-DOS has corrected this    ║ 
  2768.                 ║ problem and no longer loads SHARE automatically ║ 
  2769.                 ║ regardless of the size of your hard disk.       ║ 
  2770.                 ╚═════════════════════════════════════════════════╝
  2771.  
  2772.         So  how  can  you load this TSR into upper memory without getting
  2773.         the   warning?    MS-DOS   recently   introduced  the  "INSTALL="
  2774.         directive  that  allows  TSR's  to be installed during CONFIG.SYS
  2775.         processing.   Programs  that Microsoft suggests be loaded in this
  2776.         manner include FASTOPEN, KEYB, NLSFUNC, and SHARE.  For example: 
  2777.  
  2778.                             INSTALL=C:\DOS\SHARE.EXE
  2779.  
  2780.         The  above  command,  however,  causes SHARE to be loaded down in
  2781.         conventional memory.  to get it into upper memory, use: 
  2782.  
  2783.                       INSTALL=HIGHINST.EXE C:\DOS\SHARE.EXE
  2784.  
  2785.                 ╔═════════════════════════════════════════════════╗
  2786.                 ║ WARNING: Do NOT use the /LOW option of HIGHINST ║ 
  2787.                 ║ with SHARE - it won't work and could damage     ║ 
  2788.                 ║ data on your disk!                              ║ 
  2789.                 ╚═════════════════════════════════════════════════╝
  2790.  
  2791.  
  2792.         7.3 Microsoft's MS-DOS 5.0       
  2793.  
  2794.         With   the  introduction  of  MS-DOS  5.0,  Microsoft  has  added
  2795.         extensive  support  for  loading software into high memory.  This
  2796.         includes  not  only  device drivers and TSRs, but also the MS-DOS
  2797.         disk  buffers,  the master environment, and most of the operating
  2798.         system itself.  
  2799.  
  2800.         This  capability  requires the use of an Upper Memory Block (UMB)
  2801.         server  such as Key Software Products' HIGHUMM.SYS.  Although the
  2802.         MS-DOS  5.0  version  of  EMM386.SYS has been modified to provide
  2803.         such  support,  there  are  several  disadvantages  to  using  it
  2804.         instead of The Last Byte Memory Manager to load software high: 
  2805.  
  2806.              o  EMM386   requires   a   386   or  better  processor.
  2807.                 (HIGHUMM does not.) 
  2808.  
  2809.              o  EMM386  requires  that  HIMEM.SYS  be  loaded first.
  2810.                 (HIGHUMM  does  not.   However, HIMEM is also needed
  2811.                 to  load  the  operating system itself into extended
  2812.                 memory;  The  Last Byte Memory Manager allows you to
  2813.                 load HIMEM into upper memory using HIGHDRVR.) 
  2814.  
  2815.  
  2816.  
  2817.  
  2818.  
  2819.  
  2820.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  2821.  
  2822.  
  2823.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              48
  2824.  
  2825.  
  2826.              o  Using  HIMEM  and EMM386 as the basis of UMB support
  2827.                 requires  that  both  be  loaded  into  conventional
  2828.                 memory, where they use approximately 10k bytes.  
  2829.  
  2830.              o  EMM386  puts  the  processor  into  protected  mode,
  2831.                 adding  an  instruction  execution  time  penalty of
  2832.                 about 5%.  
  2833.  
  2834.         There  are  two  basic  approaches  that  you  can  take  to load
  2835.         software  into  upper  memory  using MS-DOS 5.0 and The Last Byte
  2836.         Memory  Manager.   The  first  of these is to install HIGHUMM and
  2837.         use  the  'DEVICEHIGH'  and  'LOADHIGH'  commands  introduced  in
  2838.         MS-DOS   5.0;   the   other   is  to  use  HIGHDRVR  and  HIGHTSR
  2839.         (HIGHINST).  
  2840.  
  2841.         We  recommend  the  latter  approach because HIGHDRVR and HIGHTSR
  2842.         provide  a  richer  set  of options for controlling the load high
  2843.         process.  
  2844.  
  2845.  
  2846.         7.3.1 Using DEVICEHIGH and LOADHIGH      
  2847.  
  2848.         To  use  this  approach,  your CONFIG.SYS file should contain the
  2849.         following lines: 
  2850.  
  2851.                 DOS=HIGH,UMB 
  2852.                 DEVICE=LASTBYTE.SYS {and any options} 
  2853.                 DEVICE=HIGHDRVR.SYS C:\DOS\HIMEM.SYS 
  2854.                 DEVICE=HIGHUMM.SYS {and any options} 
  2855.  
  2856.         Then  you can use the MS-DOS 5.0 DEVICEHIGH command in additional
  2857.         lines  of  your CONFIG.SYS file to load your other device drivers
  2858.         into upper memory, as in: 
  2859.  
  2860.                 DEVICEHIGH={device driver to be loaded high} 
  2861.                 DEVICEHIGH={device driver to be loaded high} 
  2862.                         . . .  
  2863.                 DEVICEHIGH={device driver to be loaded high} 
  2864.  
  2865.         With  this  CONFIG.SYS file, your AUTOEXEC.BAT file may load TSRs
  2866.         high using the MS-DOS 5.0 LOADHIGH command as in: 
  2867.  
  2868.                 LOADHIGH C:\DOS\PRINT.COM 
  2869.  
  2870.  
  2871.         7.3.2 Using HIGHDRVR and HIGHTSR      
  2872.  
  2873.         The  second approach is to use the HIGHDRVR and HIGHTSR utilities
  2874.         of  The  Last  Byte  Memory Manager in the normal manner.  To use
  2875.         this  approach, your CONFIG.SYS file should contain the following
  2876.         lines: 
  2877.  
  2878.  
  2879.  
  2880.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  2881.  
  2882.  
  2883.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              49
  2884.  
  2885.  
  2886.  
  2887.                 DOS=HIGH 
  2888.                 DEVICE=LASTBYTE.SYS {and any options} 
  2889.                 DEVICE=HIGHDRVR.SYS C:\DOS\HIMEM.SYS 
  2890.  
  2891.         Then  you can use HIGHDRVR in additional lines of your CONFIG.SYS
  2892.         file to load your other device drivers into upper memory, as in: 
  2893.  
  2894.                 DEVICE=HIGHDRVR.SYS {device driver to be loaded high} 
  2895.                 DEVICE=HIGHDRVR.SYS {device driver to be loaded high} 
  2896.                         . . .  
  2897.                 DEVICE=HIGHDRVR.SYS {device driver to be loaded high} 
  2898.  
  2899.         With  this  CONFIG.SYS  file,  your AUTOEXEC.BAT file should load
  2900.         TSRs high using HIGHTSR as in: 
  2901.  
  2902.                 HIGHTSR C:\DOS\PRINT.COM 
  2903.  
  2904.  
  2905.         7.4 Microsoft's Windows 3.0       
  2906.  
  2907.         In  general,  The  Last  Byte Memory Manager has a high degree of
  2908.         compatibility  with  Windows  3.0.   If  you  are  having trouble
  2909.         running  Windows,  first  be  sure  that  your system is properly
  2910.         configured  so  that it runs without The Last Byte Memory Manager
  2911.         installed.    If   you   have   isolated  the  problem  to  their
  2912.         combination,  then perhaps the following information will help to
  2913.         correct the problem: 
  2914.  
  2915.  
  2916.         7.4.1 Modifying the Windows SYSTEM.INI File     
  2917.  
  2918.         With  Windows  3.0 running in 386 enhanced mode, LASTBYTE.SYS and
  2919.         Windows  will  both  try  to  use  the  upper  memory  area, thus
  2920.         creating  a  conflict.   To  avoid  the  conflict,  you  must ask
  2921.         Windows  to  not  use  this  region.   This  can  be  done with a
  2922.         configuration  option  in  the  [386Enh]  section  of the Windows
  2923.         SYSTEM.INI file: 
  2924.  
  2925.                               EMMExclude=A000-FFFF
  2926.  
  2927.         If  you have used the "EXCLUDE" option of LASTBYTE.SYS to disable
  2928.         any  region  of  the upper memory, then Windows may be told it is
  2929.         ok  to  use  that  area.   For example, if LASTBYTE.SYS is loaded
  2930.         using the line: 
  2931.  
  2932.                        DEVICE=LASTBYTE.SYS EXCLUDE=D000:64
  2933.  
  2934.         then  you may use the following configuration option (in addition
  2935.         to the EMMExclude option above) in your SYSTEM.INI file: 
  2936.  
  2937.  
  2938.  
  2939.  
  2940.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  2941.  
  2942.  
  2943.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              50
  2944.  
  2945.  
  2946.                               EMMInclude=D000-DFFF
  2947.  
  2948.         The  EMMInclude  option  will take precedence over the EMMExclude
  2949.         option when the two overlap, as above.  
  2950.  
  2951.         On  system  with  a  single  display  (e.g.,  VGA),  Windows will
  2952.         sometimes   write   into   the  other  display  area  (i.e.,  the
  2953.         monochrome  area, B0000-B7FFF).  Some users may thus also find it
  2954.         necessary   to   add   the  option  "DualDisplay-True"  to  their
  2955.         SYSTEM.INI  file,  or  to use the option "EXCLUDE=B000:32" on the
  2956.         LASTBYTE.SYS command line.  
  2957.  
  2958.  
  2959.         7.4.2 Positioning an EMS Page Frame     
  2960.  
  2961.         If  you  are using the Real or Standard modes of Windows, you may
  2962.         have  installed  an EMS device driver for those applications that
  2963.         need  expanded  memory.  In an attempt to reduce fragmentation of
  2964.         upper  memory, it is useful to position the EMS Page Frame either
  2965.         at  the  bottom  or  top  of  an  otherwise empty region of upper
  2966.         memory.   However,  if  you  have  used the DOS=F000:32 option to
  2967.         gain  another  32k  of  DOS  memory, don't position your EMS Page
  2968.         Frame  at  E800  -  Windows  will not run with it any higher than
  2969.         E000.  
  2970.  
  2971.         The  Enhanced  386  mode  of  Windows  will automatically emulate
  2972.         expanded   memory   for   those  applications  that  require  it.
  2973.         Unfortunately,   Windows   ignores   the  EMMExclude  option  and
  2974.         positions  the  EMS  page frame in upper memory.  If the same 64k
  2975.         area  is used by The Last Byte Memory Manager for something else,
  2976.         your   system   may   hang.   To  correct  the  problem,  add  an
  2977.         "EMSPageFrame=nnnn"  option  in  your  SYSTEM.INI  file  to  tell
  2978.         Windows   where   to   put  the  page  frame,  combined  with  an
  2979.         "EXCLUDE=nnnn:64"  option  on  the  LASTBYTE.SYS  command line to
  2980.         keep it from using this area.  
  2981.  
  2982.  
  2983.         7.4.3 "Unsupported Data Configuration"       
  2984.  
  2985.         The  386  Enhanced  mode of Windows 3.0 has a restriction that it
  2986.         cannot  run  when  certain  types  of  software  have been loaded
  2987.         high.   When this happens, Windows will terminate and display the
  2988.         error  message,  "Unsupported  Data  Configuration".   This  only
  2989.         happens  in  386  Enhanced mode, and is not related in particular
  2990.         to use of The Last Byte Memory Manager.  
  2991.  
  2992.         Device  drivers  that are known to load high without this problem
  2993.         include  HIMEM.SYS,  MOUSE.SYS, SETVER.SYS, ANSI.SYS, and all the
  2994.         Key  Software Products device drivers.  A device driver and a TSR
  2995.         known  to  cause this problem are EGA.SYS and DOSKEY.COM.  If you
  2996.         are  experiencing  this error message, you can either run Windows
  2997.  
  2998.  
  2999.  
  3000.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  3001.  
  3002.  
  3003.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              51
  3004.  
  3005.  
  3006.         in   another   mode,   or   try  modifying  your  CONFIG.SYS  and
  3007.         AUTOEXEC.BAT files to locate and remove the offending software.  
  3008.  
  3009.         Microsoft  is removing this restriction in version 3.1 of Windows
  3010.         which is expected to be released around the end of 1991.  
  3011.  
  3012.  
  3013.         7.4.4 HIGHMEM and Windows 386 Enhanced Mode    
  3014.  
  3015.         MS-DOS  applications  run from inside Windows 3.0 are given their
  3016.         own   "virtual"   address  space  of  640k.   Windows  tells  the
  3017.         processor   to  map  memory  references  in  this  space  to  the
  3018.         particular  640k  of  physical memory which has been allocated to
  3019.         the  application.   References  outside this range are considered
  3020.         invalid  and  thus  return  garbage.   Since HIGHMEM is a program
  3021.         that  inspects  upper  memory  between 640k and 1 meg, there's no
  3022.         way  it  can  execute  properly  in  this  context.  HIGHMEM will
  3023.         behave normally outside of Windows.  
  3024.  
  3025.  
  3026.         7.4.5 HIGHDISK and Windows 386 Enhanced Mode    
  3027.  
  3028.         HIGHDISK.SYS  also  uses memory in the 640k to 1 meg range and so
  3029.         is  susceptible  to the same problems that HIGHMEM experiences as
  3030.         discussed  above.  Outside of Windows, and in any mode other than
  3031.         386 Enhanced Mode, HIGHDISK will behave normally.  
  3032.  
  3033.  
  3034.         7.5 HyperWare's HyperDisk        
  3035.  
  3036.         HyperDisk  is  a  shareware disk caching utility.  It's too large
  3037.         to  load  high  with  HIGHDRVR  or  HIGHTSR  under  the 32K limit
  3038.         imposed  by  the  unlicensed  evaluation version of The Last Byte
  3039.         Memory  Manager.   However,  if  your  computer  uses a Chips and
  3040.         Technologies  NEAT  or  386/AT  chipset, you can work around this
  3041.         limitation  by  using HyperDisk's "XS" option to load itself into
  3042.         the  48k block starting at E400.  Be sure to exclude this area by
  3043.         using the following option on the LASTBYTE.SYS command line: 
  3044.  
  3045.                 DEVICE=LASTBYTE.SYS EXC=E400:48 
  3046.  
  3047.         If  you  have a licensed version of The Last Byte Memory Manager,
  3048.         or  if  you don't have one of the Chips and Technologies chipsets
  3049.         mentioned  above,  then  a  better  approach  is  to  use  either
  3050.         HIGHDRVR  or  HIGHTSR  (as  appropriate)  to  load HyperDisk high
  3051.         (without  HyperDisk's  "XS" option).  This method guarantees that
  3052.         the minimum amount of upper memory will be used.  
  3053.  
  3054.  
  3055.  
  3056.  
  3057.  
  3058.  
  3059.  
  3060.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  3061.  
  3062.  
  3063.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              52
  3064.  
  3065.  
  3066.         HyperDisk  can  be  downloaded  from  HyperWare's  BBS  at  (615)
  3067.         864-6871, or obtained directly from: 
  3068.  
  3069.                 HyperWare 
  3070.                 RR#1, Box 91 
  3071.                 Pall Mall, TN 38577 
  3072.                 Voice: (615) 864-6868 
  3073.                 FAX: (615) 864-6870 
  3074.  
  3075.  
  3076.         7.6 J.P. Software's 4DOS       
  3077.  
  3078.         4DOS  is  a  shareware  replacement for COMMAND.COM.  HIGHUMM.SYS
  3079.         may  be  used  to  move the 4DOS command processor and its master
  3080.         environment  into  "Upper  Memory  Blocks"  (UMB's)  in the upper
  3081.         memory  area,  thus  reducing  the  amount of conventional memory
  3082.         below 640k used by 4DOS from 3.4k bytes to 256 bytes.  
  3083.  
  3084.         First  you  must install HIGHUMM.SYS as described earlier in this
  3085.         manual.   Then  add  a  "SHELL="  line  to  CONFIG.SYS  for 4DOS,
  3086.         including  the options "/U" (to place the command processor in an
  3087.         UMB)  and  "/E:512U" (to place the master environment in an UMB).
  3088.         The  value "512" is of course only an example - other environment
  3089.         sizes  may  be  specified.   You  may  also want to specify these
  3090.         options   for   secondary   shells  in  the  4DSHELL  environment
  3091.         variable.  Consult the 4DOS documentation for further details.  
  3092.  
  3093.         4DOS  may  be downloaded from Channel 1 BBS at (617) 354-8873, or
  3094.         obtained directly from: 
  3095.  
  3096.                 J.P. Software             CompuServe: 75300,210 
  3097.                 P.O. Box 1470             BIX: "trawson" 
  3098.                 E. Arlington, MA 02174    Internet, Bitnet, etc: 
  3099.                 Voice: (617) 646-3975       75300.210@compuserve.com 
  3100.                 Fax: (617) 646-0904 
  3101.  
  3102.  
  3103.         7.7 David Hamilton's BUFFIT       
  3104.  
  3105.         There's  a very nice shareware scroll-back TSR called BUFFIT that
  3106.         saves  lines  of  text that have been scrolled off the top of the
  3107.         screen  and allows you to pull them back down for review.  One of
  3108.         the  advantages  of  version  3.0  and later of BUFFIT is that it
  3109.         will  load  itself  entirely  into a UMB provided by HIGHUMM.SYS,
  3110.         thus using no conventional memory at all.  
  3111.  
  3112.         To  install  BUFFIT into upper memory, first you must install the
  3113.         HIGHUMM.SYS  device  driver  by  inserting the following lines in
  3114.         your CONFIG.SYS file: 
  3115.  
  3116.                 DEVICE=LASTBYTE.SYS {and any LASTBYTE options} 
  3117.  
  3118.  
  3119.  
  3120.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  3121.  
  3122.  
  3123.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              53
  3124.  
  3125.  
  3126.                 DEVICE=HIGHUMM.SYS 
  3127.  
  3128.         Then  all  you  have to do is reboot your computer and run BUFFIT
  3129.         from  the  command  line,  or  else  add  it to your AUTOEXEC.BAT
  3130.         file.  
  3131.  
  3132.         BUFFIT  is  available  from  a number of BBS's, usually under the
  3133.         filename BUFFIT30.ZIP.  
  3134.  
  3135.  
  3136.         7.8 Charles Lazo's WAS       
  3137.  
  3138.         On  a  computer  with  no  expanded memory, you might want to use
  3139.         HIGHEMS3  to  provide  some  Expanded  Memory  for Charles Lazo's
  3140.         scroll-back  TSR, WAS.COM.  This utility saves lines of text that
  3141.         have  been  scrolled  off the top of the screen and allows you to
  3142.         pull  them  back down for review.  WAS is available from a number
  3143.         of BBS's, usually under the filename WAS062.ZIP.  
  3144.  
  3145.  
  3146.  
  3147.  
  3148.  
  3149.  
  3150.  
  3151.  
  3152.  
  3153.  
  3154.  
  3155.  
  3156.  
  3157.  
  3158.  
  3159.  
  3160.  
  3161.  
  3162.  
  3163.  
  3164.  
  3165.  
  3166.  
  3167.  
  3168.  
  3169.  
  3170.  
  3171.  
  3172.  
  3173.  
  3174.  
  3175.  
  3176.  
  3177.  
  3178.  
  3179.  
  3180.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  3181.  
  3182.  
  3183.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              54
  3184.  
  3185.  
  3186.                         APPENDIX 1 - HOW TO REACH US     
  3187.  
  3188.  
  3189.         The  KSP  telephone  (415-364-9847)  is shared by our BBS and our
  3190.         voice  mail  answering  system.   Approximate  hours of operation
  3191.         are: 
  3192.  
  3193.                    Voice mail system: 8am - 5pm PST (weekdays)
  3194.  
  3195.                  BBS system: 5pm - 8am PST (24 hrs on weekends)
  3196.  
  3197.                BBS Parameters: 1200/2400/9600 baud (v.32, v.42bis)
  3198.                              8 data bits, No Parity
  3199.  
  3200.         If  your call is answered by the voice mail system, it can take a
  3201.         message   that will be automatically forwarded to someone who can
  3202.         return  your  call as soon as possible.  In addition, it offers a
  3203.         touch-tone driven menu of useful information about our product.  
  3204.  
  3205.         If  you have access to electronic mail, you can send us a message
  3206.         via any of the following: 
  3207.  
  3208.         On BITNET, send mail to: DLEWIS@SCU.BITNET
  3209.  
  3210.         On COMPUSERVE, send mail to: >Internet:DLEWIS@SCUACC.SCU.EDU
  3211.  
  3212.         On CONNECT, send mail to: CONNECT id "DASNET"
  3213.  
  3214.                 1st line of message: \"DLEWIS@SCUACC.SCU.EDU\"@DASNET
  3215.  
  3216.         On FIDONET, send mail to: UUCP
  3217.  
  3218.                 1st line of message: To: DLEWIS@SCUACC.SCU.EDU
  3219.  
  3220.         On INTERNET, send mail to: DLEWIS@SCUACC.SCU.EDU
  3221.  
  3222.         On MCI,
  3223.  
  3224.                  At the "To:" prompt enter: DLEWIS (EMS)
  3225.                 At the "EMS:" prompt enter: Internet
  3226.                 At the "Mbx:" prompt enter: DLEWIS@SCUACC.SCU.EDU
  3227.  
  3228.         On PRODIGY, send mail to: VGDC59A
  3229.  
  3230.         On TELENET's Telemail Service:
  3231.  
  3232.                 Send to: [INTERMAIL/USCISI]TELEMAIL/USA
  3233.                 1st line of message: Forward: ARPA
  3234.                 2nd line of message: To: DLEWIS@SCUACC.SCU.EDU
  3235.  
  3236.  
  3237.  
  3238.  
  3239.  
  3240.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  3241.  
  3242.  
  3243.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              55
  3244.  
  3245.  
  3246.                       APPENDIX 2 - ACKNOWLEDGEMENTS        
  3247.  
  3248.  
  3249.         The  Last  Byte  Memory  Manager  wouldn't  exist without all the
  3250.         companies  that  manufacture  the  shadow  ram  memory controller
  3251.         chips,  and  who  have  provided techinical information on how to
  3252.         program  their  configuration registers.  If you know of a memory
  3253.         controller  chip  we  haven't included, please let us know and we
  3254.         will try to add it.  
  3255.  
  3256.         The  Last  Byte  Memory  Manager  consists  of  more  than half a
  3257.         megabyte  of  source  code, written mostly in C with a sprinkling
  3258.         of  assembly  language,  and  compiled  using  version 3.1 of the
  3259.         DeSmet/C-Ware  C  compiler.   We are grateful for the simplicity,
  3260.         flexibility,  and speed of this compiler, as well as the generous
  3261.         support   provided   by   Joel   and   Susan   Farley  of  C-Ware
  3262.         Corporation.  
  3263.  
  3264.         The  Last Byte Memory Manager could not have been created without
  3265.         the  gracious  support  of  many  people.   We  wish to thank the
  3266.         following  individuals  who  helped  to  test  beta  versions  or
  3267.         offered  useful suggestions for new features: J.B. Compton, David
  3268.         Durgee,  Mike  Hagerty,  Scott  Jordahl,  Alan  Lambert, Rob Nee,
  3269.         Kevin  Parris,  Dan Proctor, Graham Robertson, Ken Sanquist, Tony
  3270.         Sheehan,  Peter  Summers,  Steve  Hodsdon, Anthony Cox, My Phung,
  3271.         and Martin Beckmann.  
  3272.  
  3273.         Thank's  also  go to Tom Rawson of J. P. Software for providing a
  3274.         copy  of  4DOS, to Sue Nageotte of Digital Research for providing
  3275.         a  copy  of DR DOS, and to Pat Gelsinger of Intel Corporation for
  3276.         lending  his  intimate  knowledge  of the 80x86 instruction sets.
  3277.         And  finally, a special thanks to Serge Caron and Roger Cross for
  3278.         their suggestions, technical advice, patience, and friendship.  
  3279.  
  3280.  
  3281.  
  3282.  
  3283.  
  3284.  
  3285.  
  3286.  
  3287.  
  3288.  
  3289.  
  3290.  
  3291.  
  3292.  
  3293.  
  3294.  
  3295.  
  3296.  
  3297.  
  3298.  
  3299.  
  3300.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  3301.  
  3302.  
  3303.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              56
  3304.  
  3305.  
  3306.                      APPENDIX 3 - CHIPSET LIMITATIONS       
  3307.  
  3308.  
  3309.         Some  of the features offered by The Last Byte Memory Manager are
  3310.         dependent  on  the  presence  of  a  shadow ram memory controller
  3311.         chip,  what  memory  it  controls,  and  the organization of that
  3312.         memory  into  regions.   Shown  below is a summary of RAM and ROM
  3313.         regions  controlled  by  each of the memory controller chips that
  3314.         we  support.   Each  entry indicates the starting segment address
  3315.         of  memory, followed by an indication of the organization of that
  3316.         memory into regions.  
  3317.  
  3318.         Part    Ram Range       RAM Regions             ROM Regions
  3319.         ------  ---------       ----------              -----------
  3320.         36C300  C000-FFFF       C000:6x32k,1x64k        n/a
  3321.         62C202  E000-FFFF       E000:4x32k              n/a
  3322.         62C241  E000-FFFF       E000:4x32k              n/a
  3323.         62C251  E000-FFFF       E000:4x32k              n/a
  3324.         82C202  A000-FFFF       A000:6x64k              n/a
  3325.         82C212  A000-FFFF       A000:24x16k             C000:4x64k
  3326.         82C222  A000-FFFF       A000:24x16k             C000:4x64k
  3327.         82C230  A000-FFFF       A000:24x16k             C000:4x64k
  3328.         82C235  A000-FFFF       A000:24x16k             C000:8x32k
  3329.         82C241  A000-FFFF       A000:24x16k             C000:4x64k
  3330.         82C281  C000-EFFF       C000:12x16k             C000:3x64k
  3331.         82C282  C000-EFFF       C000:12x16k             C000:3x64k
  3332.         82C302  A000-FFFF       A000:24x16k             C000:4x64k
  3333.         82C307  A000-FFFF       A000:24x16k             C000:4x64k
  3334.         82C311  A000-FFFF       A000:24x16k             C000:4x64k
  3335.         82C322  A000-FFFF       A000:16x16k,1x128k      C000:2x64k,1x128k
  3336.         82C351  A000-FFFF       A000:24x16k             C000:4x64k
  3337.         82C361  C000-FFFF       C000:8x16k,2x64k        C000:8x16k,2x64k
  3338.         82C382  C000-EFFF       C000:12x16k             C000:3x64k
  3339.         82C391  C000-EFFF       C000:12x16k             C000:3x64k
  3340.         82411   A000-FFFF       A000:24x16k             C000:4x64k
  3341.         82S411  A000-FFFF       A000:24x16k             C000:4x64k
  3342.         82C461  C000-FFFF       C000:8x16k,2x64k        C000:8x16k,2x64k
  3343.         82C481  C000-FFFF       C000:8x16k,2x64k        C000:8x16k,2x64k
  3344.         82C482  C000-EFFF       C000:12x16k             C000:3x64k
  3345.         82C491  C000-EFFF       C000:12x16k             C000:3x64k
  3346.         82C812  A000-FFFF       A000:24x16k             C000:4x64k
  3347.         82C836  A000-FFFF       A000:24x16k             C000:8x32k
  3348.         82C841  A000-FFFF       A000:24x16k             C000:4x64k
  3349.  
  3350.  
  3351.  
  3352.  
  3353.  
  3354.  
  3355.  
  3356.  
  3357.  
  3358.  
  3359.  
  3360.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  3361.  
  3362.  
  3363.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              57
  3364.  
  3365.  
  3366.                     APPENDIX 4 - LICENSED DISTRIBUTORS       
  3367.  
  3368.  
  3369.         You  can  order directly from Key Software Products or any of the
  3370.         licensed  distributors  listed  below.   Those  which  can accept
  3371.         credit  card  orders are noted.  If you order by credit card, you
  3372.         must  indicate  the  type  of  card,  the  card number, your name
  3373.         exactly as printed on the card, and the card expiration date.  
  3374.  
  3375.         Information  in  this  list  is subject to change without notice.
  3376.         Foreign  exchange rates vary and thus affect overseas pricing, so
  3377.         it   is  a  good  idea  to  check  with  the  distributor  before
  3378.         ordering.  
  3379.  
  3380.         Distributors  are  for ordering only.  For additional information
  3381.         about  dealer pricing, volume discounts, site licensing, shipping
  3382.         of  product,  returns,  latest  version number or other technical
  3383.         information, call or write Key Software Products directly.  
  3384.  
  3385.         Most  distributors  can  provide  the  access  key directly.  The
  3386.         Public   (software)  Library,  however,  accepts  your  telephone
  3387.         order,  and  then  forwards  an  E-Mail  message  to Key Software
  3388.         Products.   Delivery of this message may take one or two days. We
  3389.         will  contact you and provide the access key upon receipt of this
  3390.         purchase confirmation.  
  3391.  
  3392.         Companies  interested  in obtaining 10 or more copies of The Last
  3393.         Byte  Memory  Manager  with  discounted  pricing  should  have an
  3394.         officer  of the company (such as the president, a vice president,
  3395.         director,  etc.) complete the Site License Order Form and send it
  3396.         directly  to  Key  Software  Products, to the BRISBUG Brisbane PC
  3397.         User's  Group  in  Australia,  British  Software Licensing in the
  3398.         United  Kingdom,  or  to  Eurocom Shareware in Holland.  No other
  3399.         distributor will process a Site License request.  
  3400.  
  3401.  
  3402.         KEY SOFTWARE PRODUCTS           Phone: (415) 364-9847
  3403.         440 Ninth Avenue                Price: US $29.95 + Tax (CA)
  3404.         Menlo Park, CA 94025            Method: Check
  3405.  
  3406.  
  3407.         The Public (software) Library   Phone: (800) 242-4775, or
  3408.         P.O. Box 35705                         (713) 524-6394
  3409.         Houston, Texas 77235-5705         FAX: (713) 524-6398
  3410.                                         CompuServe: 71355,470
  3411.                                         Price: US $29.95 + Tax (TX)
  3412.                                         Method: MC, Visa, AmEx,
  3413.                                                 Discover Card
  3414.  
  3415.  
  3416.  
  3417.  
  3418.  
  3419.  
  3420.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  3421.  
  3422.  
  3423.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              58
  3424.  
  3425.  
  3426.         HYPERWARE (makes HyperDisk)     Phone: (615) 864-6868
  3427.         RR#1, Box 91                      FAX: (615) 864-6870
  3428.         Pall Mall, TN 38577             CompuServe: 72230,2321
  3429.                                         Price: US $29.95 + Tax (TN)
  3430.                                         Method: Master Card, Visa
  3431.  
  3432.  
  3433.         BRISBUG Brisbane PC User's Group
  3434.         18 Headland St                  Contact: Mr. Dan Bridges
  3435.         SUNNYBANK                       Phone: (61.7) 345-9298
  3436.         Queensland 4109                 Price: AUS $45 (incl. post.)
  3437.         AUSTRALIA                       Method: Check
  3438.  
  3439.  
  3440.         EUROCOM SHAREWARE               Contact: Mr. Gary van Beeck
  3441.         Zwedenburg 119                  Phone: (+31.70) 347-3777
  3442.         NL-2591 BD The Hague              FAX: (+31.70) 347-7356
  3443.         HOLLAND                         Price: Hfl 74.-- (guilders only)
  3444.                                         Method: By Eurocheque, or
  3445.                                         Postbank (Giro): 304747
  3446.                                         payable to: G. van Beeck
  3447.  
  3448.  
  3449.         BRITISH SOFTWARE LICENSING      Contact: Mr. Graham Robertson
  3450.         280 (T/L) West Princes Street   Phone: (44.41) 339-8855 x5021
  3451.         Glasgow G4 9EU                         (44.41) 339-7264 (msg)
  3452.         UNITED KINGDOM                  Price: 21 pounds
  3453.                                         Method: Access, Visa, MC, Eurocard
  3454.  
  3455.         Internet E-Mail: Graham_Robertson@vme.glasgow.ac.uk
  3456.  
  3457.  
  3458.  
  3459.  
  3460.  
  3461.  
  3462.  
  3463.  
  3464.  
  3465.  
  3466.  
  3467.  
  3468.  
  3469.  
  3470.  
  3471.  
  3472.  
  3473.  
  3474.  
  3475.  
  3476.  
  3477.  
  3478.  
  3479.  
  3480.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  3481.  
  3482.  
  3483.         Jul 31, 1991    THE LAST BYTE MEMORY MANAGER (tm)              59
  3484.  
  3485.  
  3486.                       APPENDIX 5 - LIMITED WARRANTY       
  3487.  
  3488.  
  3489.         This  software  is provided 'as is' without warranty of any kind,
  3490.         either  expressed  or  implied, including, but not limited to the
  3491.         implied   warranties   of   merchantability  and  fitness  for  a
  3492.         particular  purpose.   The  entire  risk  as  to  the quality and
  3493.         performance of the program is with you.  
  3494.  
  3495.         Some  states do not allow the exclusion of implied warranties, so
  3496.         the  above  exclusions may not apply to you.  This warranty gives
  3497.         you  specific  legal  rights  and  you may also have other rights
  3498.         which vary from state to state.  
  3499.  
  3500.         Key  Software  Products  has  taken  due  care  in  preparing the
  3501.         documentation  and  software  included  in  The  Last Byte Memory
  3502.         Manager   to   ascertain  their  correctness  and  effectiveness.
  3503.         However,  Key  Software  Products does not warrant that operation
  3504.         of  this  software  will  be  uninterrupted or error free.  In no
  3505.         event  shall  Key  Software  Products be liable for incidental or
  3506.         consequential  damages  in  connection with or arising out of the
  3507.         furnishing, performance, or use of this software.  
  3508.  
  3509.  
  3510.                                      LICENSE
  3511.  
  3512.         You  MAY  use  this software on any computer or computers in your
  3513.         possesion, but on no more than one computer at any given time.  
  3514.  
  3515.         You  MAY  copy this software into any machine readable or printed
  3516.         form  for  backup or modification purposes in support of your use
  3517.         of the software.  
  3518.  
  3519.         You  MAY  distribute  the original unmodified, unlicensed version
  3520.         of  this  software,  but you may not charge a fee exceeding $5.00
  3521.         to  cover  the  cost of duplicating, shipping, and handling.  You
  3522.         may NOT distribute a licensed version of this software.  
  3523.  
  3524.         You  may  NOT  use,  copy, modify, sublicense, assign or transfer
  3525.         this  software  and  its license, or any copy or modification, in
  3526.         whole  or  in  part,  except  as  expressly  provided for in this
  3527.         license.  
  3528.  
  3529.  
  3530.  
  3531.  
  3532.  
  3533.  
  3534.  
  3535.  
  3536.  
  3537.  
  3538.  
  3539.  
  3540.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  3541.  
  3542.  
  3543.                         THE LAST BYTE MEMORY MANAGER (tm)
  3544.  
  3545.  
  3546.                                 Table of Contents
  3547.  
  3548.  
  3549.         CHAPTER 1 - INTRODUCTION        ...........................    2
  3550.            1.1  Important Advantages       ........................    2
  3551.  
  3552.         CHAPTER 2 - SYSTEM REQUIREMENTS       .....................    4
  3553.            2.1  Supported Hardware       ..........................    4
  3554.            2.2  Checking Compatibility Using CHIPSET     ..........    6
  3555.  
  3556.         CHAPTER 3 - DISTRIBUTION FILES       ......................    8
  3557.  
  3558.         CHAPTER 4 - GETTING STARTED       .........................   10
  3559.            4.1  Testing LASTBYTE.SYS HIGHDRVR.SYS and HIGHTSR.EXE     10
  3560.            4.2  Mapping Upper Memory with HIGHMEM    ..............   12
  3561.            4.3  Running the LICENSE Program     ...................   14
  3562.  
  3563.         CHAPTER 5 - DETAILED DESCRIPTIONS       ...................   16
  3564.            5.1  LASTBYTE.SYS        ...............................   16
  3565.            5.2  HIGHAPND.EXE and HIGHAPND.SYS      ................   21
  3566.            5.3  HIGHBFRS.EXE (MS-DOS 3 only)     ..................   24
  3567.            5.4  HIGHDISK.SYS        ...............................   25
  3568.            5.5  HIGHDRVR.SYS        ...............................   26
  3569.            5.6  HIGHEMS3.SYS and HIGHEMS4.SYS      ................   27
  3570.            5.7  HIGHENV.EXE        ................................   28
  3571.            5.8  HIGHHOLE.EXE        ...............................   30
  3572.            5.9  HIGHINST.EXE        ...............................   30
  3573.            5.10  HIGHKEY.EXE        ...............................   31
  3574.               5.10.1  Options        ..............................   31
  3575.               5.10.2  Editing Commands       ......................   31
  3576.            5.11  HIGHMARK.EXE        ..............................   33
  3577.            5.12  HIGHMEM.EXE        ...............................   34
  3578.            5.13  HIGHSPLR.EXE        ..............................   34
  3579.            5.14  HIGHTSR.EXE        ...............................   35
  3580.               5.14.1  The /NOENV Option      ......................   36
  3581.            5.15  HIGHUMM.SYS        ...............................   37
  3582.            5.16  HIGHUNDO.EXE        ..............................   38
  3583.  
  3584.         CHAPTER 6 - HINTS / SUGGESTIONS / EXPLANATIONS    .........   39
  3585.            6.1  The /SIZE Option      .............................   39
  3586.            6.2  The /LOW Option      ..............................   40
  3587.            6.3  The /RESTRICT Option      .........................   40
  3588.            6.4  Specifying Command Line Options with Indirect Files   41
  3589.            6.5  Using the DOS=F000:32 Option     ..................   41
  3590.            6.6  Video Display RAM above 640k    ...................   42
  3591.            6.7  Video Adapter Bios ROMs     .......................   43
  3592.            6.8  LASTBYTE.SYS and Expanded Memory     ..............   44
  3593.            6.9  Fine-Tuning your Adapter Hardware Configuration       45
  3594.  
  3595.         CHAPTER 7 - USE WITH OTHER SOFTWARE     ...................   46
  3596.            7.1  Microsoft's FASTOPEN and MODE programs    .........   46
  3597.  
  3598.  
  3599.  
  3600.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  3601.  
  3602.  
  3603.                         THE LAST BYTE MEMORY MANAGER (tm)
  3604.  
  3605.  
  3606.            7.2  Microsoft's SHARE program      ....................   46
  3607.            7.3  Microsoft's MS-DOS 5.0      .......................   47
  3608.               7.3.1  Using DEVICEHIGH and LOADHIGH     ............   48
  3609.               7.3.2  Using HIGHDRVR and HIGHTSR     ...............   48
  3610.            7.4  Microsoft's Windows 3.0      ......................   49
  3611.               7.4.1  Modifying the Windows SYSTEM.INI File    .....   49
  3612.               7.4.2  Positioning an EMS Page Frame    .............   50
  3613.               7.4.3  "Unsupported Data Configuration"      ........   50
  3614.               7.4.4  HIGHMEM and Windows 386 Enhanced Mode   ......   51
  3615.               7.4.5  HIGHDISK and Windows 386 Enhanced Mode   .....   51
  3616.            7.5  HyperWare's HyperDisk       .......................   51
  3617.            7.6  J.P. Software's 4DOS      .........................   52
  3618.            7.7  David Hamilton's BUFFIT      ......................   52
  3619.            7.8  Charles Lazo's WAS      ...........................   53
  3620.  
  3621.         APPENDIX 1 - HOW TO REACH US     ..........................   54
  3622.  
  3623.         APPENDIX 2 - ACKNOWLEDGEMENTS        ......................   55
  3624.  
  3625.         APPENDIX 3 - CHIPSET LIMITATIONS       ....................   56
  3626.  
  3627.         APPENDIX 4 - LICENSED DISTRIBUTORS       ..................   57
  3628.  
  3629.         APPENDIX 5 - LIMITED WARRANTY       .......................   59
  3630.  
  3631.  
  3632.  
  3633.  
  3634.  
  3635.  
  3636.  
  3637.  
  3638.  
  3639.  
  3640.  
  3641.  
  3642.  
  3643.  
  3644.  
  3645.  
  3646.  
  3647.  
  3648.  
  3649.  
  3650.  
  3651.  
  3652.  
  3653.  
  3654.  
  3655.  
  3656.  
  3657.  
  3658.  
  3659.  
  3660.         Copyright (C) 1990-91, Key Software Products. All Rights Reserved
  3661.  
  3662.